本指南适用于希望借助 AdMob 通过 iOS 应用创收,但不使用 Firebase 的发布商。如果您打算在应用中添加 Firebase(或 ),请参阅 搭配 Firebase 使用 AdMob 本指南版本。
要实现这一目标,首先要将 Google 移动广告 SDK 集成到应用中, 展示广告并赚取收入集成该 SDK 后,您就可以进而实施一种或多种支持的广告格式。
前提条件
- 使用 Xcode 15.3 或更高版本
- 定位到 iOS 12.0 或更高版本
- 推荐: 创建 AdMob 账号 以及注册应用。
导入移动广告 SDK
请使用下列方法之一导入 Google 移动广告 SDK。
CocoaPods(首选)
要将 SDK 导入 iOS 项目,最简单的方法是使用 CocoaPods。未解决 将以下代码行添加到应用的目标中:
pod 'Google-Mobile-Ads-SDK'
然后使用命令行运行以下命令:
pod install --repo-update
如果您刚开始接触 CocoaPods,请参阅 如需了解相关信息,请参阅官方文档 如何创建和使用 Podfile
Swift Package Manager
Google 移动广告 SDK 支持 9.0.0 及更高版本的 Swift Package Manager。关注这些活动 导入 Swift 软件包的步骤:
在 Xcode 中,前往 文件 >添加软件包...。
在显示的提示中,搜索 Google 移动广告 Swift 软件包 GitHub 代码库:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
选择您要使用的 Google 移动广告 Swift 软件包的版本。 对于新项目,我们建议使用 Up to Next Major Version。
完成之后,Xcode 将开始解析您的软件包依赖项, 在后台下载它们。如需详细了解如何添加软件包 请参阅 Apple 的文章。
手动下载
下载 Google 移动广告 SDK,然后
Embed & Sign
将以下框架导入您的 Xcode 项目中:GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
在项目的构建设置中:
- 将
/usr/lib/swift
路径添加到 Runpath Search Paths。 - 将
-ObjC
链接器标记添加到 Other Linker Flags(其他链接器标记)。
- 将
更新您的 Info.plist
更新应用的 Info.plist
文件以添加两个键:
一个
GADApplicationIdentifier
键,其字符串值为 AdMob app ID found in the AdMob UI。一个
SKAdNetworkItems
键,对应 Google 的SKAdNetworkIdentifier
个值 (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 账号并注册了 应用,现在正好 。
在真实应用中,将示例应用 ID 替换为您的实际应用 ID AdMob 应用 ID。如果遇到以下情况,您可以使用示例 ID 您只是在一个 Hello World 应用中试用了 SDK。
初始化移动广告 SDK
加载广告前,请调用 startWithCompletionHandler:
GADMobileAds.sharedInstance
,
该函数会初始化 SDK 并回调一次完成处理程序
初始化完成(或在 30 秒超时后)。您只需设置
最好是在应用启动时执行您应尽早调用 startWithCompletionHandler:
。
以下示例展示了如何调用 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
选择广告格式
现已导入并初始化移动广告 SDK,您可以随时 实施广告 AdMob 提供了许多不同的解决方案 提供不同的广告格式,以便您可以选择最适合您应用的用户 体验。
如果您是 SwiftUI 开发者,请关注我们的 SwiftUI 指南。
横幅
横幅广告单元展示的矩形广告会占用应用空间的一部分 布局。它们可以在设定时段后自动刷新。这意味着 用户会定期查看新广告,即使他们保持不变 界面这种广告格式的植入方式也最简单。
插页式广告
插页式广告单元可在您的应用中展示全屏广告。放在自然的地方 应用界面中的停顿和过渡,例如在通关后 展示这种广告
原生
在原生广告中,您可以自定义素材资源(例如标题和 在您的应用中展示号召性用语。通过自行设置广告样式,您可以 制作自然、毫不唐突的广告展示方式,为富有价值的用户带来 体验。
激励广告
激励广告单元可让用户通过玩游戏、接受调查或观看视频来获得游戏代币、额外的生命或积分等应用内奖励。您可以设置 为不同广告单元设置不同的奖励,并指定奖励价值和 用户收到的项。
插页式激励广告
插页式激励广告是一种激励用户的新型广告格式,采用这种格式时,您可以通过在应用中的自然过渡点自动展示的广告向用户提供奖励,如金币或额外的生命数。
与激励广告不同,用户无需自行选择即可观看插页式激励广告。
插页式激励广告需要 介绍奖励的屏幕,告知用户该奖励并让用户有机会选择退出 自己希望实现的目标
开屏广告
开屏广告是一种广告格式,会在用户打开或切换回您的 应用。广告会叠加在加载屏幕上。