שנתחיל?

מדריך זה מיועד לבעלי אפליקציות שרוצים לייצר הכנסות מאפליקציה ל-iOS באמצעות AdMob ולא משתמשים ב-Firebase. אם אתם מתכננים לכלול את Firebase באפליקציה (או שאתם שוקלים להשתמש בה), מומלץ לעיין במקום זאת בגרסה AdMob עם Firebase שבמדריך הזה.

השילוב של 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 עם ערך מחרוזת שלAdMob app ID found in the AdMob UI.

  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>

אם עדיין לא יצרתם חשבון AdMob ורשמתם אפליקציה, זה זמן מצוין לעשות זאת.

באפליקציה אמיתית, מחליפים את מזהה האפליקציה לדוגמה במזהה האפליקציהAdMob בפועל. אפשר להשתמש במזהה לדוגמה אם אתם רק מתנסים ב-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 של מודעות לנייד מיובא והופעל ועכשיו אתם יכולים להטמיע מודעה. AdMob יש מספר פורמטים שונים של מודעות, כך שתוכלו לבחור את הפורמט שהכי מתאים לחוויית המשתמש של האפליקציה שלכם.

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

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

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

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

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

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

מותאם

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

הטמעת מודעות מותאמות

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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