שנתחיל?

שילוב של 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 עם ערך מחרוזת של 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>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>

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

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

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

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

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

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

מעברון

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

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

מותאם

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

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

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

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

ההטבה הופעלה

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

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

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

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

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

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

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

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

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

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