前回はバナー広告を表示するクラスを作成しました。今回は前回までのコードの動作確認方法と、GDPR同意取得の詳細フローについて解説します。ご紹介するのは私が試行錯誤で完成させた処理ですので、変な処理だったら申し訳ないです。また、記事に誤記や極端な表現があるかもしれませんが、それは大目に見てください。雰囲気重視でお願いします。
前回までのコードの動作確認をしよう
前回までのコードでちゃんとバナーが表示されるか確認しましょう(注意:エディタ上にです)。下図のようにヒエラルキーにAdMobManagerとBannerManagerいう空のGameObjectをそれぞれ作成して、AdMobManagerクラスとBannerManagerクラスをそれぞれアタッチ(=追加)しましょう。
Playボタン押してデモバナー広告が画面の下部に表示されたら成功です。おめでとうございます💯❗️このデモバナーはあなたが設置したCanvasではなく、AdMobが動的に生成する別のCanvasに表示されます。ですから、Canvasを使用しないゲームであっても、デモバナーの表示には支障がありません。デモバナーの表示ができなかった場合は、前回までの記事を再読しましょう。
GDPR同意取得の詳細フローを確認しよう
さて、気を取り直して、処理の詳細フローを見てみましょう。今回、「同意フォームを出す処理」という部分的なものではなく「AdMobを開始する処理」という全体的なものとして解説をします。なぜなら、「同意フォームを出す処理」と「AdMobを開始する処理」を切り離して扱うことができないからです。「AdMobを開始する処理」のことをTryAdMobメソッドと名付けます。TryAdMobメソッドのフローを図にしますと、次のようになります。
いや、思っていたよりも長いですね。処理を中止させる分岐が結構あります。「同意情報の更新のリクエスト」と「同意フォームの表示のリクエスト」とで、2回もGoogleのサーバーにリクエストしないといけない点もややこしいですね。
上から順に見ていきますと、最初の3つの菱形の条件分岐は順に、TryAdMob処理が2重実行されていたらキャンセルし、広告が表示済みだったらTryAdMob処理は不要なのでキャンセルし、ネット未接続なら以降の処理ができないのでキャンセルするということをやっています。
4つ目の菱形の条件分岐では、すでに広告表示可能な場合は以降の処理をキャンセルして広告を表示するということをやっています。これら4つの菱形をやり過ごすと、ようやく処理の本体まで到達します。
処理の本体ではまず「同意情報の更新のリクエスト」をGoogleのサーバーに投げるのですが、サーバー側がエラーを返す場合があります。ですので、エラーの場合は以降の処理を中止します。エラーがなかった場合は、正確な同意状態が判明します。
同意状態が判明したら「同意フォームの表示のリクエスト」をGoogleのサーバーに投げます。もし、エラーが出た場合は処理を中止します。リクエストでGoogleによってユーザーの同意確認が必要だと判定された場合は、同意フォームが表示されます。ユーザーはその同意フォームで同意不同意の意思表示をしますが、どちらを選んだのかは我々にはわからないようになっているようです。公式の記事にもあるようにConsentInformation.CanRequestAds()がTrueを返せば、広告表示可能状態ということです。だから、我々はリクエストをした後はConsentInformation.CanRequestAds()を監視して、それがTrueを返したタイミングで広告を表示します。
ということで、とても長いので、今回はコードまで辿り着けませんでした。次回はコードを書いていきましょう。
同意フォームをAdMob管理画面に追加する方法
AdMob管理画面でAdMobのアプリIDを取得した上、同意フォームも追加しなければ、例えテストであっても実機での動作確認が行えません。同意フォームをAdMob管理画面に追加する方法については、すみませんが他サイトを参考にしてください。
コメント