שנתחיל?

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

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

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

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

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

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

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

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

מותאם

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

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

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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