Open1

iOS14.5以降にて、広告の初期化はIDFAの取得確認後にした方がいいのか?

sukedonsukedon

前提📝

使ってる広告SDKはAdmob

どうなんだろう🤔

例えばあるユーザーさんがアプリを起動した際に

アプリ起動→広告SDK初期化→IDFA取得(ATT)ダイアログ表示→ユーザーさんが承認

という流れになるように実装した場合、この端末で表示される広告はIDFAを未承諾の状態のものになるんじゃないか?というお話。

カジュアルゲームとかだと翌日継続率が50%いくといい方なんて話がありますが、これは翌日プレイしない人も50%いるということで、アプリをストアからインストールして1回プレイして去っていく人も大勢いるわけです。

なのでこの去っていく大勢の人に表示される広告も最適化されてるといいよね、と思ってます。

公式のドキュメント[1]によると、

許可リクエストを表示するには、requestTrackingAuthorizationWithCompletionHandler: を呼び出します。広告を読み込むのは、完了コールバックがあるまで待つことをおすすめします。これにより、App Tracking Transparency を通じてユーザーから許可が得られた場合に、Google Mobile Ads SDK が広告リクエストで IDFA を使用できます。

とあります。

requestTrackingAuthorizationWithCompletionHandler:

を呼ぶと

のようなダイアログが出てくるので、この後に広告を読み込む処理をした方がいい、ということですね。
文面通りに理解すると、初期化処理はアプリ起動時にやって問題ないけど、広告の読み込み処理は再度走らせる必要がありそうです。

コードでいうと

  • Unity
MobileAds.Initialize(initStatus => { });
  • swift
GADMobileAds.sharedInstance().start(completionHandler: nil)

これらは起動時に呼んで問題なくて、例えばバナー広告の場合は

  • Unity
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();

// Load the banner with the request.
 this.bannerView.LoadAd(request);
  • swift
bannerView.load(GADRequest())

はIDFA取得後に呼ぶようにしてあげる必要がある、という感じでしょうか

脚注
  1. https://developers.google.com/admob/ios/ios14#request ↩︎