要实现这一目标,首先要将 Google 移动广告 SDK 集成到应用中, 展示广告并赚取收入集成 SDK 后,您可以 继续实施一个或多个 支持的广告格式。
前提条件
- 使用 Xcode 15.3 或更高版本
- 定位到 iOS 12.0 或更高版本
导入移动广告 SDK
请使用下列方法之一导入 Google 移动广告 SDK。
CocoaPods(首选)
要将 SDK 导入 iOS 项目,最简单的方法是使用 CocoaPods。未解决 将以下代码行添加到应用的目标中:
pod 'Google-Mobile-Ads-SDK'
然后在命令行中运行以下命令:
pod install --repo-update
如果您刚开始接触 CocoaPods,请参阅 如需了解相关信息,请参阅官方文档 如何创建和使用 Podfile
Swift Package Manager
Google 移动广告 SDK 支持 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 搜索路径。 - 将
-ObjC
链接器标记添加到 Other Linker Flags(其他链接器标记)。
- 将
更新您的 Info.plist
更新应用的 Info.plist
文件以添加两个键:
一个
GADApplicationIdentifier
键,其字符串值为 Ad Manager app ID found in the Ad Manager UI and of the formca-app-pub-################~##########
。一个
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>
为了获得最佳的初始化性能,请务必将收益 群组及其对应的具体应用收益组配置 定位到 iOS 且未与任何特定应用关联的广告素材将发送到所有 iOS 设备 应用,可能会延长初始化所需的时间。
在真实应用中,将示例应用 ID 替换为您的实际应用 ID Ad Manager 应用 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,您可以随时 实施广告 Ad Manager 提供了许多不同的解决方案 提供不同的广告格式,以便您可以选择最适合您应用的用户 体验。
如果您是 SwiftUI 开发者,请关注我们的 SwiftUI 指南。
横幅
横幅广告单元展示的矩形广告会占用应用空间的一部分 布局。它们可以在设定的时间后自动刷新。这意味着 用户会定期查看新广告,即使他们保持不变 界面这种广告格式的植入方式也最简单。
插页式广告
插页式广告单元可在您的应用中展示全屏广告。放在自然的地方 应用界面中的停顿和过渡,例如在通关后 展示这种广告
原生
在原生广告中,您可以自定义素材资源(例如标题和 在您的应用中展示号召性用语。通过自行设置广告样式,您可以 制作自然、毫不唐突的广告展示方式,为富有价值的用户带来 体验。
Google Ad Manager 提供了两种植入原生广告的方法:原生样式和 自定义呈现功能来投放标准原生广告
原生样式旨在简化原生广告的植入流程 如果您对这种格式比较不熟悉自定义呈现 旨在最大限度地让您自由地制作演示文稿。
激励广告
激励广告单元允许用户玩游戏、参与调查或观看视频, 获得应用内奖励,例如金币、额外的生命或积分。您可以设置 为不同广告单元设置不同的奖励,并指定奖励价值和 用户收到的项。
插页式激励广告
插页式激励广告是一种激励用户的新型广告格式 为自动展示的广告提供奖励,如金币或额外的生命 自动应用。
与激励广告不同,用户无需自行选择即可观看激励广告 插页式广告。
与激励广告中的选择观看提示不同,插页式激励广告需要 介绍奖励的屏幕,告知用户该奖励并让用户有机会选择退出 自己希望实现的目标
开屏广告
开屏广告是一种广告格式,会在用户打开或切换回 应用。广告会叠加在加载屏幕上。