שנתחיל?

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

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

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

עדכון קובץ 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>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>

אם עדיין לא יצרתם חשבון 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.

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

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

מעברון

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

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

מותאם

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

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

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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