开始使用

本指南适用于希望借助 AdMob 通过 iOS 应用获利的发布商 并且没有使用 Firebase如果您打算在应用中添加 Firebase(或 ),请参阅 搭配 Firebase 使用 AdMob 本指南版本。

要实现这一目标,首先要将 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 软件包的步骤:

  1. 在 Xcode 中,前往 文件 >添加软件包...

  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. 下载 Google 移动广告 SDK 并将以下框架 Embed & Sign 添加到您的 Xcode 项目中:

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. -ObjC 链接器标记添加到项目的 Other Linker Flags(其他链接器标记)中, build 设置:

更新您的 Info.plist

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

  1. 一个 GADApplicationIdentifier 键,其字符串值为 AdMob app ID found in the AdMob UI

  2. 一个 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>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 替换为您的实际应用 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 指南

横幅广告单元展示的矩形广告会占用应用空间的一部分 布局。它们可以在设定的时间后自动刷新。这意味着 用户会定期查看新广告,即使他们保持不变 界面也是一种实施起来最简单的广告格式。

植入横幅广告

插页式广告

插页式广告单元可在您的应用中展示全屏广告。放在自然的地方 应用界面中的停顿和过渡,例如在通关后 展示这种广告

植入插页式广告

原生

在原生广告中,您可以自定义素材资源(例如标题和 在您的应用中展示号召性用语。通过自行设置广告样式,您可以 制作自然、毫不唐突的广告展示方式,为富有价值的用户带来 体验。

植入原生广告

激励广告

激励广告单元允许用户玩游戏、参与调查或观看视频, 获得应用内奖励,例如金币、额外的生命或积分。您可以设置 为不同广告单元设置不同的奖励,并指定奖励价值和 用户收到的项。

植入激励广告

插页式激励广告

插页式激励广告是一种激励用户的新型广告格式 为自动展示的广告提供奖励,如金币或额外的生命 在应用自然过渡期间出现的问题

与激励广告不同,用户无需自行选择即可观看激励广告 插页式广告。

与激励广告中的选择观看提示不同,插页式激励广告需要 介绍奖励的屏幕,告知用户该奖励并让用户有机会选择退出 自己希望实现的目标

植入插页式激励广告

开屏广告

开屏广告是一种广告格式,会在用户打开或切换回 应用。广告会叠加在加载屏幕上。

植入开屏广告