開始使用

將 Google Mobile Ads SDK 整合至應用程式,是顯示廣告並賺取收益的第一步。整合 SDK 後,即可導入一或多個支援的廣告格式

先備知識

  • 使用 Xcode 15.3 以上版本
  • 指定 iOS 12.0 以上版本

匯入 Mobile Ads SDK

請使用下列其中一種方法匯入 Google Mobile Ads SDK。

CocoaPods (建議)

將 SDK 匯入 iOS 專案的最簡單方式,是使用 CocoaPods。開啟專案的 Podfile,並將這一行新增至應用程式目標:

pod 'Google-Mobile-Ads-SDK'

接著,從指令列執行下列指令:

pod install --repo-update

如果您是 CocoaPods 新手,請參閱其官方說明文件,瞭解如何建立及使用 Podfiles。

Swift 套件管理工具

自 9.0.0 版起,Google Mobile Ads SDK 支援 Swift 套件管理工具。請按照下列步驟匯入 Swift 套件:

  1. 在 Xcode 中依序前往「File」>「Add Packages...」,安裝 Google Mobile Ads Swift 套件。

  2. 在出現的提示中,搜尋 Google Mobile Ads Swift 套件 GitHub 存放區:

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. 選取您想要使用的 Google 行動廣告 Swift 套件版本。 如要建立新專案,建議您使用直到下一個主要版本

完成後,Xcode 會開始解析套件依附元件,並在背景下載這些依附元件。如要進一步瞭解如何新增套件依附元件,請參閱 Apple 的文章

手動下載

  1. 將下列架構下載 Google Mobile Ads SDK 和 Embed & Sign,並加進 Xcode 專案:

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. 在專案建構設定中,將 -ObjC 連結器標記新增至「Other Linker Flags」

更新 Info.plist

更新應用程式的 Info.plist 檔案,加入兩個金鑰:

  1. 具有Ad Manager app ID found in the Ad Manager UI and of the form ca-app-pub-################~##########字串值的 GADApplicationIdentifier 鍵。

  2. 包含 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>

為了獲得最佳初始化效能,請務必將收益群組與用於初始化的特定應用程式建立關聯。凡是指定 iOS 且與任何特定應用程式無關的收益群組設定,都會傳送到您帳戶中所有 iOS 應用程式,可能會延長初始化所需時間。

在實際應用程式中,將範例應用程式 ID 替換成您的實際Ad Manager 應用程式 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 現已匯入並初始化,您可以開始導入廣告。 Ad Manager 提供多種廣告格式,方便您選擇最適合應用程式使用者體驗的廣告格式。

若是 SwiftUI 開發人員,請遵循我們的 SwiftUI 指南

橫幅廣告單元會佔用應用程式的部分版面配置,而且會經過一段時間後自動重新整理。換句話說,使用者每隔一段時間就會看到新廣告,即使他們停留在應用程式中的同一個畫面也一樣。這也是最簡單的廣告格式。

導入橫幅廣告

插頁式

插頁式廣告單元會在您應用程式中顯示全頁廣告。您可以將這類廣告放置在應用程式介面的自然中斷處和轉換點,例如遊戲應用程式過關後。

導入插頁式廣告

原生

原生廣告可讓您自訂素材資源 (例如廣告標題和行動號召) 在應用程式中的呈現方式。藉由自行設定廣告樣式,您就能建立不會幹擾使用者的自然廣告展示,增添獨特的使用者體驗。

Google Ad Manager 提供兩種導入原生廣告的方法:原生樣式和透過自訂顯示。

原生樣式經過特別設計,可簡化原生廣告的導入程序;如果您是初次接觸這種格式,就很適合使用此功能。自訂顯示功能可讓您在建立簡報時享有最大的自由。

導入原生樣式 導入原生廣告 (自訂顯示)

已獲得獎勵

獎勵廣告單元可讓使用者透過玩遊戲、參加問卷調查或觀看影片,贏得應用程式內獎勵,例如金幣、額外生命或積分。您可為不同的廣告單元設定不同的獎勵,並指定使用者獲得的獎勵價值和項目。

導入獎勵廣告

插頁式獎勵廣告

插頁式獎勵廣告是一種全新的獎勵廣告格式,您可在應用程式自然轉換時自動顯示這類廣告,向使用者提供獎勵,例如錢幣或額外生命。

有別於獎勵廣告,使用者不需要選擇觀看獎勵廣告。

插頁式獎勵廣告不會顯示選擇觀看提示,而是需要顯示獎勵簡介畫面,讓使用者選擇不要觀看。

導入插頁式獎勵廣告

應用程式開啟頁面廣告

應用程式開啟頁面廣告是一種廣告格式,會在使用者開啟或切換回應用程式時顯示。廣告會覆蓋載入畫面。

導入應用程式開啟頁面廣告