המדריך הזה מיועד לבעלי אפליקציות שרוצים לייצר הכנסות (מונטיזציה) מאפליקציה ל-iOS באמצעות AdMob ולא משתמשים ב-Firebase. אם אתם מתכננים לכלול את Firebase באפליקציה (או אתה מתעניין בזה), כדאי לעיין AdMob עם Firebase של המדריך הזה.
שילוב של Google Mobile Ads SDK באפליקציה הוא הצעד הראשון לקראת הצגת מודעות וייצור הכנסות. אחרי שמשלבים את ה-SDK, אפשר להמשיך ליישם אחד או יותר מהפורמטים הנתמכים של המודעות.
דרישות מוקדמות
- צריך להשתמש ב-Xcode מגרסה 15.3 ואילך
- יעד iOS מגרסה 12.0 ואילך
- מומלץ: ליצור חשבון AdMob ולרשום אפליקציה.
ייבוא של 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:
ב-Xcode, מתקינים את חבילת Swift של Google Mobile Ads. לשם כך, עוברים אל קובץ > Add Packs... (הוספת חבילות).
בהודעה שמופיעה, מחפשים את Google Mobile Ads SWIFT Package מאגר של GitHub:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
בוחרים את הגרסה של חבילת Swift של מודעות Google לנייד שבה רוצים להשתמש. לפרויקטים חדשים, מומלץ להשתמש ב-Up to Next Major Version.
בסיום התהליך, מערכת Xcode תתחיל לפתור את יחסי התלות של החבילות מורידים אותם ברקע. לפרטים נוספים על הוספת חבילה של יחסי התלות, ראו מאמר של Apple.
הורדה ידנית
מורידים את Google Mobile Ads SDK ואת
Embed & Sign
המסגרות הבאות לפרויקט Xcode:GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
בהגדרות ה-build של הפרויקט:
- מוסיפים את הנתיב
/usr/lib/swift
לנתיבי החיפוש של Runpath. - מוסיפים את דגל הקישור
-ObjC
לקטע דגלי קישור אחרים.
- מוסיפים את הנתיב
עדכון קובץ Info.plist
צריך לעדכן את הקובץ Info.plist
של האפליקציה כדי להוסיף שני מפתחות:
מפתח
GADApplicationIdentifier
עם ערך מחרוזת של AdMob app ID found in the AdMob UI.מפתח
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.
כרזה
יחידות של מודעות באנר מוצגות כמלבן שתופס חלק משטח האפליקציה הפריסה שלו. יכול להיות שיתבצע רענון אוטומטי שלהם אחרי פרק זמן מסוים. הרענון האוטומטי יגרום לכך שתוצג למשתמשים מודעה חדשה במרווחי זמן קבועים, גם אם הם יישארו באותו מסך באפליקציה. כמו כן, מודעות באנר הן פורמט המודעה הפשוט ביותר להטמעה.
מעברון
יחידות של מודעות מעברון משמשות להצגה של מודעות במסך מלא באפליקציה. צריך למקם אותן בנקודות עצירה ומעבר טבעיות בממשק של האפליקציה, כמו אחרי השלמת שלב באפליקציית משחקים.
מותאם
מודעות מותאמות הן מודעות שבהן אפשר להתאים אישית את הדרך שבה נכסים דיגיטליים, כמו כותרות קריאות לפעולה מוצגות באפליקציות שלכם. אם תגדירו את המודעה בעצמכם, תוכלו ליצור הצגת מודעות טבעית ולא פולשנית, שיכולה להוסיף למשתמש עשיר חוויה אישית.
ההטבה הופעלה
יחידות של מודעות מתגמלות מאפשרות למשתמשים לשחק במשחקים, להשתתף בסקרים או לצפות בסרטונים כדי לזכות בפרסים בתוך האפליקציה, כמו מטבעות, עוד חיים או נקודות. אתם יכולים להגדיר תגמולים שונים ליחידות מודעות שונות ולציין את הערך של התגמולים ואת הפריטים שהמשתמשים קיבלו.
מודעות מעברון מתגמלות
מודעת מעברון מתגמלת היא סוג חדש של פורמט מודעה שמבוסס על תמריצים, שמאפשר לכם להציע תגמולים, כמו מטבעות או תוספת חיים, על מודעות שמופיעות באופן אוטומטי. במהלך מעברים טבעיים בין אפליקציות.
בניגוד למודעות מתגמלות, המשתמשים לא נדרשים להביע הסכמה כדי לצפות במודעות מתגמלות מעברון.
במקום לבקש את ההסכמה לשימוש במודעות מתגמלות, מודעות מעברון מתגמלות צריכות לכלול מסך פתיחה שמציין מהו התגמול ומאפשר למשתמשים לבטל את ההסכמה.
הטמעה של מודעות מעברון מתגמלות
מודעות בפתיחת האפליקציה
מודעה בפתיחת אפליקציה היא פורמט מודעה שמופיע כשמשתמשים פותחים את חשבון אפליקציה. המודעה מציגה שכבת-על במסך הטעינה.