本指南適用於未使用 Firebase 透過 iOS 應用程式營利的發布商。如果您打算在應用程式中加入 Firebase (或考慮使用),請改為參閱本指南的 AdMob with 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 新手,請參閱 CocoaPods 的官方說明文件,瞭解如何建立及使用 Podfiles。
Swift 套件管理員
自 9.0.0 版起,Google Mobile Ads SDK 可支援 Swift Package Manager。請按照下列步驟匯入 Swift 套件:
在 Xcode 中依序前往「File」>「Add Packages...」,安裝 Google Mobile Ads Swift 套件。
在出現的提示中,搜尋 Google Mobile Ads Swift 套件 GitHub 存放區:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
選取您要使用的 Google Mobile Ads Swift 套裝方案版本。 如果是新專案,建議使用「更新至下一個主要版本」。
完成後,Xcode 會開始解析套件依附元件,並在背景下載依附元件。如要進一步瞭解如何新增套件依附元件,請參閱 Apple 的文章。
手動下載
將 Google Mobile Ads SDK 和
Embed & Sign
下列架構下載至 Xcode 專案:GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
在專案建構設定中的「Other Linker Flags」中加入
-ObjC
連結器旗標:
更新 Info.plist
更新應用程式的 Info.plist
檔案,新增兩個金鑰:
含有AdMob app ID found in the AdMob UI字串值的
GADApplicationIdentifier
鍵。具有
SKAdNetworkIdentifier
值的SKAdNetworkItems
鍵,代表 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 帳戶並註冊應用程式,不妨現在試試。
在實際應用程式中,請將範例應用程式 ID 換成實際的AdMob 應用程式 ID。如果您只是在 Hello World 應用程式中測試 SDK,可以使用範例 ID。
初始化 Mobile Ads SDK
載入廣告前,請先對 GADMobileAds.sharedInstance
呼叫 startWithCompletionHandler:
方法,此方法會初始化 SDK,並在初始化完成後 (或 30 秒逾時後) 回呼完成處理常式。這項動作只需執行一次,理想情況是在應用程式啟動時執行。您應盡快呼叫 startWithCompletionHandler:
。
以下範例說明如何在 AppDelegate
中呼叫 startWithCompletionHandler:
方法:
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 指南。
橫幅廣告
橫幅廣告單元會顯示佔用應用程式版面配置一部分的矩形廣告。且會在一段時間後自動重新整理。這表示即使使用者一直留在應用程式的同一個畫面,仍會定期看到新廣告。這也是最簡單的導入廣告格式。
插頁式
插頁式廣告單元會在應用程式中顯示全版廣告,將廣告放在應用程式介面上的自然中斷點和轉換點,例如在遊戲應用程式中過關後。
原生
原生廣告是可讓您自訂素材資源 (例如廣告標題和行動號召) 在應用程式中的顯示方式。自行設定廣告樣式,就能製作出自然、不會幹擾的廣告簡報,為使用者體驗增添更多元的體驗。
已獲得獎勵
獎勵廣告單元可讓使用者透過玩遊戲、參加問卷調查或觀看影片,獲得應用程式內獎勵,例如金幣、額外生命或積分。您可為不同的廣告單元設定不同的獎勵,並指定使用者獲得的獎勵價值和項目。
插頁式獎勵廣告
插頁式獎勵廣告是新型的獎勵廣告格式,可讓您針對在應用程式自然轉換期間自動顯示的廣告提供獎勵 (例如金幣或額外生命)。
與獎勵廣告不同的是,獎勵廣告不需要等使用者選擇觀看。
插頁式獎勵廣告會顯示選擇觀看提示,而不是在獎勵廣告中顯示選擇觀看提示,改為提供簡介畫面,讓使用者有機會選擇是否取消訂閱。
應用程式開啟頁面廣告
應用程式開啟頁面廣告是一種廣告格式,會在使用者開啟或切換回應用程式時顯示,廣告會重疊在載入畫面。