設定 Google Mobile Ads SDK

在應用程式中整合 Google Mobile Ads SDK,是放送廣告賺取收益的第一步。整合完畢後,即可開始導入一或多種支援的廣告格式

必備條件

  • 使用 Xcode 16.0 以上版本
  • 指定 iOS 13.0 以上版本

匯入 Google Mobile Ads SDK

使用下列任一方式匯入 Google Mobile Ads SDK

Swift Package Manager

請按照下列步驟,在專案新增套件依附元件

  1. 在 Xcode 中,依序前往「File」>「Add Package Dependencies…」(「檔案」>「新增套件依附元件…」),安裝「Google Mobile Ads Swift Package」。

  2. 在出現的提示詞框,搜尋「Google Mobile Ads Swift Package GitHub repository」:

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. 選取要採用的 Google Mobile Ads Swift Package 版本。 新專案建議使用「Up to Next Major Version」

CocoaPods

繼續操作前,請先參閱「使用 CocoaPods」說明文件,瞭解如何建立及使用 Podfile。

請按照下列步驟使用 CocoaPods

  1. 開啟專案的 Podfile,將這行程式碼新增至應用程式的 target 建構設定:

    pod 'Google-Mobile-Ads-SDK'
  2. 在終端機執行:

    pod install --repo-update

手動下載

  1. 下載 Google Mobile Ads SDK,並使用 Embed & Sign 指令,將下列框架加入 Xcode 專案:

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. 在專案的建構設定中:

    • /usr/lib/swift 路徑新增至「Runpath Search Paths」
    • -ObjC 連接器標記新增至「Other Linker Flags」

更新 Info.plist

更新應用程式的 Info.plist 檔案以新增兩個鍵:

  1. GADApplicationIdentifier 鍵,字串值為 Ad Manager 應用程式 ID (可在 Ad Manager 使用者介面中找到),且格式為 ca-app-pub-################~##########

  2. SKAdNetworkItems 鍵,SKAdNetworkIdentifier 值包含 Google (cstr6suwn9.skadnetwork),以及向 Google 提供這些值的特定第三方買家

完整程式碼片段

<key>GADApplicationIdentif<ier/ke<y>
!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~1458002>5<11 --
string>SAMP<LE_APP_ID</string>
key>S<KAdNet<workItems</key>
a<rray>
  dict>
    k<ey>SKAd<NetworkIdentifier/key>
   < string><cstr6suwn<9.skadnetw<ork/string>
  /dict><;
  dict&g<t;
    key>SKAdNetworkIden<tifier/key&<gt;
    s<tring>4<fzdc2evr5.skadnetwork/str<ing>
  </dict>
  dict>
    key&<gt;SKAdNetw<orkIdenti<fier/key&g<t;
    string>2fnua5td<w4.skadnet<work/string>
  /dict>
 < dict>
 <   key><;SKAdNetwo<rkIdentifier/key>
    <string><ydx93a7ass.skadnetwork/string<>
  /dic<t>
  d<ict>
  <  key>SKAdNetworkIdent<ifier/key&<gt;
    string>p78axxw29g.<skadnetwork</string&g<t;
  /dict<>
  dict>
    key&g<t;SKAdNetw<orkIdentifier/key>
    str<ing>v72q<ych5uu.sk<adnetwork/<string>
  /dict>
  <dict>
 <   key>SKAdNetworkIdentifi<er/key>
<    strin<g>ludvb<6z3bs.skadnetwork/string&<gt;
  /dic<t>
  dict>
    key>S<KAdNetworkI<dentifier</key>
 <   string>cp8zw746q7.s<kadnetwork</string>
  /dict>
  dic<t>
    k<ey>SKA<dNetworkId<entifier/key>
    stri<ng>3sh4<2y64q3.skadnetwork/string><
  /dict><;
  dict&<gt;
    ke<y>;SKAdNetworkIdentifie<r/key>
<    string>c6k4g5qg8m.skad<network/str<ing>
 < /dict><
  dict>
    key>SK<AdNetworkI<dentifier/key>
    string&<gt;s39g8k73<mm.skadne<twork/stri<ng&gt;
  /dict>
  dict<>
    k<ey>SKAdNetworkIdentifier/k<ey>
    <string><;wg4vff78z<m.skadnetwork/string>
<  /dict><;
  dict>
    key>SKAdN<etworkIdent<ifier/key<>
    s<tring>3qy4746246.skadn<etwork/str<ing>
  /dict>
  dict><;
    key&g<t;SKAdNet<workIdenti<fier/key>
    string&g<t;f38h382j<lk.skadnetwork/string>
  /<dict>
  <dict>
<    key><;SKAdNetworkIdentifier/ke<y>
    <string>hs6bdukanm.skadnetw<ork/string&<gt;
  /di<ct>
  d<ict&gt;
    key>SKAdNe<tworkIdent<ifier/key>
    string>m<lmmfzh3r3.s<kadnetwor<k/string&g<t;
  /dict>
  dict><
    key&g<t;SKAdNetworkIdentifier/key&g<t;
    stri<ng>v4n<xqhlyqp.sk<adnetwork/string>
  /d<ict>
  <dict>
    key>SKAdNetwo<rkIdentifie<r/key><
    strin<g>;wzmmz9fp6w.skadnetwo<rk/string&<gt;
  /dict>
  dict>
  <  key>SK<AdNetwork<Identifier</key>
    string>su<67r6k2v3.s<kadnetwork/string>
  /dict<>
  dict<>
    <key>SKA<dNetworkIdentifier/key><;
    stri<ng>yclnxrl5pm.skadnetwork/<string>
<  /dict&g<t;
  dict&<gt;
    key>SKAdNetwor<kIdentifie<r/key>
    string>t38b2<kh725.skadn<etwork/st<ring>
 < /dict>
  dict>
   < key>SK<AdNetworkIdentifier/key>
 <   string&g<t;7ug5zh2<4hu.skadne<twork/string>
  /dict&<gt;
  dict<>
    key>SKAdNetworkId<entifier/ke<y>
   < string><;gta9lk7p23.skadnetwork/s<tring>
<  /dict>
  dict>
    ke<y>SKAdNe<tworkIden<tifier/key<>
    string>vutu7a<keur.skadn<etwork/string>
  /dict><
  dict><
    key&<gt;SKAdNet<workIdentifier/key>
  <  string&g<t;y5ghdn5j9k.skadnetwork/stri<ng>
  /d<ict>
 < dict>
<    key>SKAdNetworkIde<ntifier/ke<y>
    string>v9wttpbfk<9.skadnetwo<rk/string<>
  /di<ct&gt;
  dict>
    key<>SKAdNe<tworkIdentifier/key>
    s<tring>n3<8lu8286q.<skadnetwor<k/string>
  /dict>
<  dict><
    key>SKAdNetworkIdenti<fier/key><;
    str<ing>47v<hws6wlr.skadnetwork/strin<g>
  /d<ict>
  dict>
    key><;SKAdNetwor<kIdentifi<er/key><
    string>kbd757ywx3<.skadnetwo<rk/string>
  /dict>
  d<ict>
   < key>S<KAdNetwork<Identifier/key>
    st<ring>9t<245vhmpl.skadnetwork/string&g<t;
  /dict&<gt;
  dic<t>
    <key&gt;SKAdNetworkIdentif<ier/key><;
    string>a2p9lx4jpn.sk<adnetwork/s<tring><
  /dict&g<t;
  dict>
    key><SKAdNetwor<kIdentifier/key>
    strin<g>22mmun<2rn5.skad<network/st<ring>
  /dict>
  di<ct>
   < key>SKAdNetworkIdentifier</key>
  <  string&<gt;44jx675<5aq.skadnetwork/string><;
  /dict&<gt;
  dict>
    key>SKA<dNetworkIde<ntifier/k<ey>
   < string>k674qkevps.ska<dnetwork/s<tring>
  /dict>
  dict&<gt;
    key<>SKAdN<etworkIden<tifier/key>
    string<>4468km<3ulz.skadnetwork/string>
 < /dict>
<  dict><;
    key&<gt;SKAdNetworkIdentifier/<key>
  <  string>2u9pt9hc89.skadne<twork/strin<g>
  /<dict>
 < dict>
    key>SKAd<NetworkIde<ntifier/key>
    string><;8s468mfl3y<.skadnetw<ork/string<>
  /dict>
  dict&g<t;
    key<>SKAdNetworkIdentifier/key<>
    st<ring>k<lf5c3l5u5.<skadnetwork/string>
  </dict>
<  dict>
    key>SKAdNet<workIdentif<ier/key&g<t;
    str<ing&gt;ppxm28t8ap.skadnet<work/strin<g>
  /dict>
  dict>
<    key><SKAdNetwo<rkIdentifi<er/key>
    string><kbmxgpxpgc<.skadnetwork/string>
  /di<ct>
  di<ct>
  <  key>S<KAdNetworkIdentifier/key&<gt;
    st<ring>uw77j35x4d.skadnetwor<k/string><;
  /dict<>
  dic<t>;
    key>SKAdNetw<orkIdentif<ier/key>
    string>578<prtvx9j.ska<dnetwor<k/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>c3frkrj4fj.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>97r2b46745.skadnetwork/string>
  /dict>
  dict>
    key>SKAdNetworkIdentifier/key>
    string>3qcr597p9d.skadnetwork/string>
  /dict>
/array>

SAMPLE_APP_ID 替換為您的 Ad Manager 應用程式 ID。測試時,請使用前一個範例中的範例應用程式 ID。

為獲得最佳初始化效能,請務必將收益群組與所用的特定應用程式建立關聯。如果收益群組設定是以 iOS 為目標,且未與任何特定應用程式建立關聯,系統會將設定傳送至您帳戶中的所有 iOS 應用程式,這可能導致初始化時間變長。

初始化 Google Mobile Ads SDK

載入廣告前,請呼叫 GADMobileAds.sharedInstancestart() 方法,這樣 SDK 就會初始化,並在完成或 30 秒逾時後,對完成處理常式發出回呼。建議盡早呼叫 start()

Swift

// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()

SwiftUI

// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()

Objective-C

// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];

選取廣告格式

您已成功匯入並初始化 Google Mobile Ads SDK,現在可以導入廣告了。Ad Manager 提供多種廣告格式,您可以根據應用程式的使用者體驗,選擇最適合的格式。

橫幅廣告單元會占用應用程式的部分版面來顯示矩形廣告,且會固定在一段時間後自動重新整理。也就是說,即便使用者停留在應用程式的同一個畫面,每隔一段時間還是會看見新的廣告。這也是最容易導入的廣告格式。

導入橫幅廣告

插頁式廣告

您可以將插頁式廣告單元安插至使用者操作應用程式的空檔或轉換點 (例如通過遊戲應用程式關卡後),在應用程式介面上顯示全版廣告。

導入插頁式廣告

原生廣告

您可利用原生廣告,自訂應用程式顯示廣告標題、行動號召等素材資源的方式。只要自行設定廣告樣式,就能以自然、不突兀的方式呈現廣告,打造豐富的使用者體驗。

使用 Google Ad Manager 導入原生廣告時,可以選擇原生樣式,或透過自訂顯示功能呈現標準原生廣告。

原生樣式能簡化原生廣告導入程序,如果您剛接觸這種格式,就十分適合採用此方法。自訂顯示功能則提供充分自由發揮空間,方便設計廣告呈現方式。

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

獎勵廣告

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

導入獎勵廣告

插頁式獎勵廣告

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

與獎勵廣告不同的是,插頁式獎勵廣告不需等使用者選擇觀看即可放送。

獎勵廣告會顯示選擇觀看的提示,插頁式獎勵廣告則是顯示獎勵簡介畫面,使用者可選擇不觀看廣告。

導入插頁式獎勵廣告

應用程式開啟頁面廣告

「應用程式開啟頁面廣告」這種格式會在使用者開啟或切換回應用程式時顯示。廣告會疊在載入畫面上。

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