开始

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本指南适用于希望借助 AdMob 通过 iOS 应用创收但不使用 Firebase 的发布商。如果您打算在应用中包含 Firebase(或者正在考虑添加),请参阅本指南的搭配 Firebase 使用 AdMob

要展示广告并赚取收入,第一步就是将 Google 移动广告 SDK 集成到应用中。集成 SDK 后,您可以继续植入一种或多种支持的广告格式

前提条件

  • 使用 Xcode 13.2.1 或更高版本
  • 以 iOS 10.0 或更高版本为目标平台

导入移动广告 SDK

CocoaPods(首选)

如需将该 SDK 导入 iOS 项目,最简单的方法是使用 CocoaPods。打开项目的 Podfile 并将下面这行代码添加到应用的目标中:

pod 'Google-Mobile-Ads-SDK'

然后从命令行中运行以下命令:

pod install --repo-update

如果您不熟悉 CocoaPods,请参阅其官方文档,了解如何创建和使用 Podfile。

Swift Package Manager

从版本 9.0.0 开始,Google 移动广告 SDK 支持 Swift Package Manager。请按照以下步骤导入 Swift 软件包。

  1. 在 Xcode 中,前往 File(文件)> Add Packages...(添加软件包...)以安装 Google 移动广告 Swift 软件包。

  2. 在显示的提示中,搜索 Google 移动广告 Swift 软件包的 GitHub 代码库:

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. 选择您要使用的 Google 移动广告 Swift 软件包版本。 对于新项目,我们建议使用 Up to Next Major Version

完成之后,Xcode 将开始解析您的软件包依赖项,并在后台下载它们。如需详细了解如何添加软件包依赖项,请参阅 Apple 的文章

手动下载

  1. 直接下载并解压缩 SDK 框架,然后将以下框架导入您的 Xcode 项目中:

    • GoogleAppMeasurement.xcframework
    • GoogleAppMeasurementIdentitySupport.xcframework
    • GoogleMobileAds.xcframework
    • GoogleUtilities.xcframework
    • nanopb.xcframework
    • PromisesObjC.xcframework
    • UserMessagingPlatform.xcframework
  2. 在项目的 build 设置中,将 -ObjC 链接器标志添加到 Other Linker Flags

更新您的 Info.plist

更新应用的 Info.plist 文件以添加两个键:

  1. GADApplicationIdentifier 键,其字符串值为您的AdMob 应用 ID(可在AdMob 界面中找到)。
  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>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>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>3sh42y64q3.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>prcb7njmu6.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>9rd848q2bz.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>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>av6w8kgt66.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>424m5254lk.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>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>gta9lk7p23.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 帐号注册应用,正好可借此机会完成这两项任务。

初始化移动广告 SDK

在加载广告之前,请在 GADMobileAds.sharedInstance 上调用 startWithCompletionHandler: 方法,该方法将初始化相应 SDK,并在初始化完成后(或在 30 秒超时后)回调完成处理程序。此操作仅需执行一次,最好是在应用启动时执行。您应该尽早调用 startWithCompletionHandler:

以下示例展示了如何在 AppDelegate 中调用 startWithCompletionHandler: 方法:

AppDelegate.m 示例(节选)

Swift

import GoogleMobileAds

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    return true
  }

}

Objective-C

@import GoogleMobileAds;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  [GADMobileAds.sharedInstance startWithCompletionHandler:nil];
  return YES;
}

@end

如果您使用的是中介功能,可能需要等到调用完成处理程序后再加载广告,因为这可确保初始化所有的中介适配器。

选择广告格式

现已导入移动广告 SDK 并已初始化,您随时可以植入广告了。 AdMob 提供了多种不同的广告格式,您可以根据您应用的用户体验选择最契合的一款。

横幅广告是在设备屏幕的顶部或底部展示的矩形广告。 用户与应用互动时,横幅广告会停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,建议从横幅广告着手。

植入横幅广告

插页式广告

覆盖应用界面的全屏广告,直到用户将其关闭。 它们最适合在应用执行流程中的自然暂停位置展示,例如游戏关卡之间或是用户刚完成一项任务之后。

植入插页式广告

原生

与您的应用外观和风格相符的可定制广告。您可以决定这类广告的投放方式和位置,从而使布局与应用的设计更加一致。

实现 Native Ads

已奖励

为观看短视频和与试玩广告及问卷调查互动的用户予以奖励的广告。适合通过免费游戏用户创收。

植入激励广告 植入激励广告(新 API)