שנתחיל?

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

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

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

    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. מוסיפים את דגל המקשר -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

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

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

למפתחים של SwiftUI, אפשר לעקוב אחר SwiftUI שלנו guide.

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

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

מעברון

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

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

מותאם

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

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

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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