שילוב ה-Google Mobile Ads SDK באפליקציה הוא השלב הראשון בהצגת מודעות וייצור הכנסות. אחרי משלבים את ה-SDK, אפשר ליישם אחד או יותר מהפורמטים הנתמכים של מודעות.
דרישות מוקדמות
- צריך להשתמש ב-Xcode 14.1 ואילך
- צריך לטרגט ל-iOS 11.0 ואילך
ייבוא Mobile Ads SDK
CocoaPods (מועדף)
הדרך הפשוטה ביותר לייבא את ה-SDK לפרויקט ל-iOS היא באמצעות CocoaPods. פותחים את ה-Podfile של הפרויקט ומוסיפים את השורה הזו ליעד של האפליקציה:
pod 'Google-Mobile-Ads-SDK'
לאחר מכן, משורת הפקודה מריצים:
pod install --repo-update
אם זו הפעם הראשונה שאתם משתמשים ב-CocoaPods, עיינו במסמכי התיעוד הרשמיים כדי לקבל מידע על יצירת קובצי Podfiles ושימוש בהם.
מנהל חבילות Swift
Google Mobile Ads SDK תומך ב-Swift Package Manager החל מגרסה 9.0.0. כדי לייבא את חבילת Swift:
ב-Xcode צריך להתקין את חבילת Google Mobile Ads Swift על ידי ניווט אל File > Add חבילות....
בהודעה שמופיעה, מחפשים את המאגר של Swift Package של Google Mobile Ads ב-GitHub:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
עליך לבחור את הגרסה של חבילת Swift של Google Mobile Ads שבה ברצונך להשתמש. לפרויקטים חדשים, מומלץ להשתמש בעד הגרסה הראשית הבאה.
כשתסיימו, Xcode יתחיל לפתור את יחסי התלות של החבילות ויוריד אותם ברקע. למידע נוסף על הוספת יחסי תלות של חבילות, קראו את המאמר של Apple.
הורדה ידנית
מורידים את הקובץ framework של Cloud SDK ופורסים אותו ישירות, ומייבאים את המסגרות הבאות לפרויקט Xcode:
GoogleAppMeasurement.xcframework
GoogleAppMeasurementIdentitySupport.xcframework
GoogleMobileAds.xcframework
GoogleUtilities.xcframework
nanopb.xcframework
PromisesObjC.xcframework
UserMessagingPlatform.xcframework
מוסיפים את הדגל
-ObjC
לקישור ל-Other Linker Flags בהגדרות ה-build של הפרויקט:
עדכון המידע.plist
צריך לעדכן את קובץ Info.plist
של האפליקציה כדי להוסיף שני מפתחות:
מפתח
GADApplicationIdentifier
עם ערך מחרוזת שלAd Manager app ID found in the Ad Manager UI and of the formca-app-pub-################~##########
.מפתח
SKAdNetworkItems
עם ערכיSKAdNetworkIdentifier
ל-Google (cstr6suwn9.skadnetwork
) ולקונים נבחרים של צד שלישי, שסיפקו את הערכים האלה ל-Google.
קטע קוד מלא
<key>GADApplicationIdentifier</key> <string>ca-app-pub-3940256099942544~1458002511</string> <key>SKAdNetworkItems</key> <array> <dict> <key>SKAdNetworkIdentifier</key> <string>cstr6suwn9.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4fzdc2evr5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4pfyvq9l8r.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>2fnua5tdw4.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ydx93a7ass.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>5a6flpkh64.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>p78axxw29g.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v72qych5uu.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ludvb6z3bs.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>cp8zw746q7.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>c6k4g5qg8m.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>s39g8k73mm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3qy4746246.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3sh42y64q3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>f38h382jlk.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>hs6bdukanm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>prcb7njmu6.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v4nxqhlyqp.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>wzmmz9fp6w.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>yclnxrl5pm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>t38b2kh725.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>7ug5zh24hu.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>9rd848q2bz.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>y5ghdn5j9k.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>n6fk4nfna4.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v9wttpbfk9.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>n38lu8286q.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>47vhws6wlr.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>kbd757ywx3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>9t245vhmpl.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>a2p9lx4jpn.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>22mmun2rn5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4468km3ulz.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>2u9pt9hc89.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>8s468mfl3y.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>av6w8kgt66.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>klf5c3l5u5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ppxm28t8ap.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>424m5254lk.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ecpz2srf59.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>uw77j35x4d.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>mlmmfzh3r3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>578prtvx9j.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4dzt52r2t5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>gta9lk7p23.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>e5fvkxwrpn.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>8c4e2ghe7u.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>zq492l623r.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3rd42ekr43.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3qcr597p9d.skadnetwork</string> </dict> </array>
כדי ליהנות מביצועי אתחול אופטימליים, חשוב לשייך את קבוצות התפוקה לאפליקציות הספציפיות שבהן נעשה בהן שימוש. הגדרות של קבוצות תפוקה שמטרגטות ל-iOS ואינן משויכות לאף אפליקציה ספציפית, יישלחו לכל אפליקציות ה-iOS בחשבון שלכם, מה שעשוי להאריך את הזמן הנדרש להפעלה.
מפעילים את Mobile Ads SDK
לפני טעינת המודעות, קראו ל-method startWithCompletionHandler:
ב-GADMobileAds.sharedInstance
, שמפעילה את ה-SDK ומפעילה handler של השלמת הפעולה אחרי השלמת האתחול (או אחרי זמן קצוב לתפוגה של 30 שניות). יש לעשות זאת רק פעם אחת, באופן אידיאלי עם הפעלת האפליקציה. עליכם להתקשר אל startWithCompletionHandler:
בהקדם האפשרי.
הנה דוגמה לאופן שבו מפעילים את השיטה startWithCompletionHandler:
ב-AppDelegate
:
דוגמה ל-AppDelegate.m (קטע)
Swift
import GoogleMobileAds @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { GADMobileAds.sharedInstance().start(completionHandler: nil) return true } }
Objective-C
@import GoogleMobileAds; @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GADMobileAds.sharedInstance startWithCompletionHandler:nil]; return YES; } @end
אם משתמשים בתהליך בחירת הרשת (Mediation), מומלץ להמתין עד שה-handler של ההשלמה יתקשר לפני טעינת המודעות, כדי להבטיח שכל המתאמים לבחירת רשת יופעלו.
בחירה של פורמט מודעה
בשלב הזה אנחנו מייבאים ומפעילים את Mobile Ads SDK, ואתם מוכנים להטמיע מודעה. Ad Manager אפשר לבחור מבין כמה פורמטים שונים של מודעות, כדי שתוכלו לבחור את הפורמט שהכי מתאים לחוויית המשתמש באפליקציה שלכם.
באנר
מודעות מלבניות שמופיעות בחלק העליון או התחתון של מסך המכשיר. מודעות באנר נשארות על המסך בזמן שהמשתמשים מקיימים אינטראקציה עם האפליקציה, והן יכולות להתרענן באופן אוטומטי לאחר פרק זמן מסוים. אם אתם רק מתחילים לפרסם, זה מקום מצוין להתחיל.
פרסומת מרווח ביניים
מודעות במסך מלא שמסתירות את הממשק של האפליקציה עד שהמשתמש סוגר אותן. הן מתאימות במיוחד להפסקות טבעיות בתהליך ההפעלה של האפליקציה, למשל בין שלבים במשחק או מיד לאחר השלמת משימה.
מותאמת
מודעות בהתאמה אישית שמתאימות לעיצוב ולסגנון של האפליקציה. אתם מחליטים איך ואיפה הן יוצגו, כך שהפריסה תהיה תואמת יותר לעיצוב של האפליקציה.
ב-Google Ad Manager יש שתי דרכים להטמעת מודעות מותאמות: סגנונות מותאמים ורינדור מותאם אישית.
המטרה של מודעות מותאמות היא לפשט ככל האפשר את ההטמעה של מודעות מותאמות, ומומלץ לבחור בפורמט חדש. עיבוד מותאם אישית נועד למקסם את החופש שלכם ליצירת המצגות.
הטמעה של סגנונות מותאמים | הטמעה של עיבוד מותאם אישית |
ההטבה הופעלה
מודעות שמתגמלות משתמשים על צפייה בסרטונים קצרים ועל אינטראקציות עם מודעות התנסות באפליקציה ומודעות סקר. השיטה הזו מתאימה למונטיזציה של משתמשים בחינם.
הטמעת מודעות מתגמלות | הטמעה של מודעות מתגמלות (ממשקי API חדשים) |