שנתחיל?

שילוב ה-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:

  1. ב-Xcode צריך להתקין את חבילת Google Mobile Ads Swift על ידי ניווט אל File > Add חבילות....

  2. בהודעה שמופיעה, מחפשים את המאגר של Swift Package של Google Mobile Ads ב-GitHub:

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. עליך לבחור את הגרסה של חבילת Swift של Google Mobile Ads שבה ברצונך להשתמש. לפרויקטים חדשים, מומלץ להשתמש בעד הגרסה הראשית הבאה.

כשתסיימו, Xcode יתחיל לפתור את יחסי התלות של החבילות ויוריד אותם ברקע. למידע נוסף על הוספת יחסי תלות של חבילות, קראו את המאמר של Apple.

הורדה ידנית

  1. מורידים את הקובץ framework של Cloud SDK ופורסים אותו ישירות, ומייבאים את המסגרות הבאות לפרויקט Xcode:

    • GoogleAppMeasurement.xcframework
    • GoogleAppMeasurementIdentitySupport.xcframework
    • GoogleMobileAds.xcframework
    • GoogleUtilities.xcframework
    • nanopb.xcframework
    • PromisesObjC.xcframework
    • UserMessagingPlatform.xcframework
  2. מוסיפים את הדגל -ObjC לקישור ל-Other Linker Flags בהגדרות ה-build של הפרויקט:

עדכון המידע.plist

צריך לעדכן את קובץ Info.plist של האפליקציה כדי להוסיף שני מפתחות:

  1. מפתח GADApplicationIdentifier עם ערך מחרוזת שלAd Manager app ID found in the Ad Manager UI and of the form ca-app-pub-################~##########.

  2. מפתח 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 חדשים)