שנתחיל?

השילוב של Google Mobile Ads SDK באפליקציה הוא השלב הראשון להצגת מודעות ולייצור הכנסות. אחרי שתשלבו את ה-SDK, תוכלו להמשיך להטמיע אחד או יותר מהפורמטים הנתמכים של מודעות.

דרישות מוקדמות

  • צריך להשתמש ב-Xcode מגרסה 15.3 ואילך
  • יעד iOS מגרסה 12.0 ואילך

ייבוא של Mobile Ads SDK

אפשר לייבא את Google 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 Package על ידי מעבר אל File > Add Packages....

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

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

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

הורדה ידנית

  1. מורידים את Google Mobile Ads SDK ו-Embed & Sign את ה-frameworks הבאות לפרויקט ה-Xcode:

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. מוסיפים את דגל ה-linker -ObjC ל-Other Linker flags בהגדרות ה-build של הפרויקט:

עדכון Info.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>3sh42y64q3.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>f38h382jlk.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hs6bdukanm.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>gta9lk7p23.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vutu7akeur.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>eh6m2bh4zr.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>klf5c3l5u5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ppxm28t8ap.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>pwa73g5rt2.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>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 בחשבון שלכם, מה שעלול להאריך את משך הזמן הנדרש לאתחול.

באפליקציה אמיתית, מחליפים את מזהה האפליקציה לדוגמה במזהה האפליקציהAd Manager בפועל. תוכלו להשתמש במזהה לדוגמה אם אתם רק רוצים להתנסות ב-SDK באפליקציה Hello World.

הפעלה של Mobile Ads SDK

לפני שטוענים את המודעות, כדאי לקרוא ל-method startWithCompletionHandler: ב-GADMobileAds.sharedInstance, כדי להפעיל את ה-SDK ולהפעיל חזרה handler של השלמה ברגע שהאתחול הושלם (או אחרי 30 שניות של זמן קצוב לתפוגה). צריך לעשות זאת רק פעם אחת, רצוי בעת הפעלת האפליקציה. עליכם להתקשר אל startWithCompletionHandler: בהקדם האפשרי.

הדוגמה הבאה מראה איך לקרוא ל-method startWithCompletionHandler: ב-AppDelegate:

דוגמה ל-AppDelegate (פרט)

Swift

import GoogleMobileAds

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    return true
  }
}

SwiftUI

import GoogleMobileAds

class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    return true
  }
}

@main
struct YourApp: App {
  // To handle app delegate callbacks in an app that uses the SwiftUI lifecycle,
  // you must create an application delegate and attach it to your `App` struct
  // using `UIApplicationDelegateAdaptor`.
  @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

  var body: some Scene {
    WindowGroup {
      NavigationView {
        ContentView()
      }
    }
  }
}

Objective-C

@import GoogleMobileAds;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  [GADMobileAds.sharedInstance startWithCompletionHandler:nil];
  return YES;
}

@end

בחירה של פורמט מודעה

עכשיו ה-Mobile Ads SDK מיובא ומפעילים, ואתם מוכנים להטמיע מודעות. Ad Manager יש כמה פורמטים שונים של מודעות, כך שתוכלו לבחור את הפורמט שהכי מתאים לחוויית המשתמש של האפליקציה.

למפתחים של SwiftUI, מומלץ לפעול לפי המדריך של SwiftUI.

יחידות של מודעות באנר מוצגות כמלבן שתופס חלק מהפריסה של האפליקציה. יכול להיות שיתבצע רענון אוטומטי שלהם אחרי פרק זמן מסוים. כלומר, משתמשים רואים מודעה חדשה במרווחי זמן קבועים, גם אם הם נשארים באותו מסך באפליקציה. בנוסף, זהו הפורמט הפשוט ביותר להטמעה.

הטמעת מודעות באנר

פרסומת מרווח ביניים

יחידות של מודעות מעברון משמשות להצגה של מודעות במסך מלא באפליקציה. צריך למקם אותן בנקודות עצירה ומעבר טבעיות בממשק של האפליקציה, כמו אחרי השלמת שלב באפליקציית משחקים.

הטמעת מודעות מעברון

מותאם

מודעות מותאמות הן מודעות שבהן אפשר להתאים אישית את האופן שבו נכסים, כמו כותרות וקריאות לפעולה, מוצגים באפליקציות. אם תעצבו את המודעה בעצמכם, תוכלו ליצור מצגת טבעית ולא פולשנית, שיכולה להוסיף חוויית משתמש עשירה.

ב-Google Ad Manager יש שתי דרכים להטמיע מודעות מותאמות: סגנונות מותאמים ומודעות מותאמות רגילות באמצעות עיבוד מותאם אישית.

הסגנונות המותאמים אישית נועדו לפשט את ההטמעה של מודעות מותאמות, ולכן כדאי מאוד למשתמשים חדשים בפורמט. מטרת רינדור מותאם אישית היא למקסם את החופש יצירת המצגות.

הטמעת סגנונות מותאמים הטמעת מודעות מותאמות (רינדור בהתאמה אישית)

ההטבה הופעלה

יחידות של מודעות מתגמלות מאפשרות למשתמשים לשחק במשחקים, להשתתף בסקרים או לצפות בסרטונים כדי לזכות בפרסים בתוך האפליקציה, כמו מטבעות, תוספת חיים או נקודות. אפשר להגדיר תגמולים שונים ליחידות מודעות שונות ולציין את ערכי התגמולים ואת הפריטים שהמשתמש קיבל.

הטמעה של מודעות מתגמלות

מודעות מעברון מתגמלות

מודעות מעברון מתגמלות הן סוג חדש של פורמט מודעה שמבוסס על תמריצים. הוא מאפשר להציע תגמולים, כמו מטבעות או תוספת חיים, על מודעות שמופיעות אוטומטית בנקודות מעבר טבעיות באפליקציה.

בניגוד למודעות מתגמלות, המשתמשים לא צריכים להביע הסכמה כדי לראות מעברון מתגמל.

במקום בקשת ההסכמה במודעות מתגמלות, מודעות מעברון מתגמלות צריכות לכלול מסך פתיחה עם הודעה על התגמול, ולאפשר למשתמשים לבטל את ההסכמה אם הם רוצים לעשות זאת.

הטמעה של מודעות מעברון מתגמלות

מודעות בפתיחת אפליקציה

מודעה בפתיחת אפליקציה היא פורמט מודעה שמופיע כשמשתמשים פותחים את האפליקציה או חוזרים אליה. המודעה מוצגת כשכבת-על במסך הטעינה.

הטמעה של מודעות בפתיחת אפליקציה