השילוב של Google Mobile Ads SDK באפליקציה הוא השלב הראשון בהצגת מודעות וייצור הכנסות. אחרי שתטמיעו את ה-SDK, תוכלו ליישם אחד או יותר מהפורמטים הנתמכים של מודעות.
דרישות מוקדמות
- צריך להשתמש ב-Xcode 13.2.1 ואילך
- טירגוט ל-iOS מגרסה 10.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, מתקינים את חבילת ה-Swip Ads של Google לנייד על ידי ניווט אל קובץ > הוספת חבילות....
בהודעה שמופיעה, מחפשים את המאגר של Google Mobile Ads Swift Package: GitHub:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
עליך לבחור את הגרסה של חבילת Google Mobile Ads Swift שבה ברצונך להשתמש. לפרויקטים חדשים, מומלץ להשתמש בגרסה הראשית הבאה.
בסיום, Xcode יתחיל לפתור את התלות בחבילה ולהוריד אותם ברקע. למידע נוסף על הוספת יחסי תלות של חבילות, קראו את המאמר של Apple.
הורדה ידנית
מורידים את ה-SDK של ה-SDK ומחלצים אותו ישירות, ומייבאים את המסגרות הבאות לפרויקט Xcode:
GoogleAppMeasurement.xcframework
GoogleAppMeasurementIdentitySupport.xcframework
GoogleMobileAds.xcframework
GoogleUtilities.xcframework
nanopb.xcframework
PromisesObjC.xcframework
UserMessagingPlatform.xcframework
הוסיפו את הסימונים של המקשר
-ObjC
אל Flags Linker Flags נוספים בהגדרות ה-build של הפרויקט:
עדכון Info.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
לפני טעינת המודעות, קראו לשיטה 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
אם אתם משתמשים בתהליך בחירת הרשת, מומלץ להמתין עד לטיפול במודעות לפני השלמת הטעינה, כדי להבטיח שכל המתאמים לתהליך בחירת הרשת יאופסו.
בחירת פורמט מודעה
ה-SDK של מודעות לנייד מיובא ומאתחל, ועכשיו אתם יכולים להטמיע מודעה. Ad Manager יש כמה פורמטים שונים של מודעות, כך שאתם יכולים לבחור את הפורמט שהכי מתאים לחוויית המשתמש באפליקציה שלכם.
באנר
מודעות מלבניות שמופיעות בחלק העליון או התחתון של מסך המכשיר. מודעות באנר נשארות על המסך במהלך האינטראקציה של משתמשים עם האפליקציה, וניתן לרענן אותן אוטומטית לאחר פרק זמן מסוים. אם זו הפעם הראשונה שאתם מתנסים בפרסום בנייד, כדאי להתחיל כאן.
פרסומת מרווח ביניים
מודעות במסך מלא שמכסות את הממשק של האפליקציה, עד שהמשתמש סוגר אותן. מומלץ להשתמש בהן בהפסקות רגילות בתהליך ההפעלה של האפליקציה, כמו בין שלבים במשחק או מיד אחרי שמשלימים אותה.
מותאמת
מודעות בהתאמה אישית שמתאימות לעיצוב ולסגנון של האפליקציה, ואתם מחליטים איך ואיפה הן יוצגו, כך שהפריסה תואמת יותר לעיצוב של האפליקציה.
ב-Google Ad Manager קיימות שתי דרכים להטמעת מודעות מותאמות: סגנונות מותאמים ורינדור מותאם אישית.
המטרה של הסגנונות המותאמים היא להקל ככל האפשר על היישום של מודעות מותאמות, ומומלץ לבחור בפורמט הזה. עיבוד מותאם אישית נועד למקסם את החופש שיש לכם ליצירת המצגות שלכם.
הטמעת סגנונות מותאמים | הטמעת רינדור מותאם אישית |
ההטבה הופעלה
מודעות שמתגמלות משתמשים על צפייה בסרטונים קצרים ועל אינטראקציות עם מודעות התנסות באפליקציה ומודעות סקר. זו אפשרות טובה ליצירת רווח ממשתמשים שאינם משלמים על השימוש באפליקציה.
הטמעה של מודעות מתגמלות | הטמעה של מודעות מתגמלות (ממשקי API חדשים) |