שנתחיל?

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

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

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

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

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

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

הורדה ידנית

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

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. מוסיפים את הדגל -ObjC לקישור לדגלים אחרים של מקשרי תגים בהגדרות ה-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

לפני שטוענים מודעות, צריך להפעיל את השיטה 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

בחירת פורמט מודעה

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

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

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

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

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

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

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

מותאם

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

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

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

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

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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