שנתחיל?

השילוב של 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, תוכלו לעיין במסמכי העזרה הרשמיים כדי לקבל מידע על יצירת קובצי Podfile ועל השימוש בהם.

Swift Package Manager

Google Mobile Ads SDK תומך ב-Swift Package Manager החל מגרסה 9.0.0. כדי לייבא את חבילת Swift:

  1. ב-Xcode, מתקינים את חבילת Swift של Google Mobile Ads. לשם כך, עוברים אל File (קובץ) > Add Packages (הוספת חבילות)….

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

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

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

הורדה ידנית

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

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. בהגדרות ה-build של הפרויקט:

    • מוסיפים את הנתיב /usr/lib/swift אל נתיבי החיפוש של Runpath.
    • מוסיפים את דגל הקישור -ObjC לקטע דגלי קישור אחרים.

עדכון קובץ 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>2fnua5tdw4.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ydx93a7ass.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>hs6bdukanm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mlmmfzh3r3.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>su67r6k2v3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>yclnxrl5pm.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>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>ppxm28t8ap.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>578prtvx9j.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4dzt52r2t5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>tl55sbb4fm.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>3rd42ekr43.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
  </dict>
</array>

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

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

איך מפעילים את Mobile Ads SDK

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

דוגמה לאופן שבו מפעילים את השיטה 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 יש שתי דרכים להטמיע מודעות מותאמות: סגנונות מותאמים ומודעות מותאמות רגילות באמצעות עיבוד בהתאמה אישית.

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

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

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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