iOS アプリへの Google Admob の導入
Google Admob とは
アプリに広告を表示することで、開発者が収益化を行うことができる
導入方法
- Firebase SDK を導入する
- Google アナリティクスを有効にする
- Admobの設定をする
Firebase を Admob と併用する場合はこちらを見る↓
Firebase を使用せず、Admob 単体を使用する場合はこちらを見る↓
SwiftPM での導入方法など、上に書いてないことが書いてある
実装で検討したこと・困ったこと
GADApplicationIdentifier
の値が含まれているが、パブリックリポジトリでGit 管理しても問題ないか?
Q: Info.plist にはA. (検討中)多分・・・問題ない。公式ドキュメントの記述は見つからなかったが、GitHub にパブリックで挙げている人は多い。ただし、Google-Service.plist はパブリックリポジトリの場合、プッシュしてはいけない。
Q: 広告 ID とアプリ ID は違うのか
A. 違う。そりゃそうなのだが。2つの値の形式はかなり似ているので間違えやすい。
ここに
テスト広告を読み込む際は、次に示す iOS バナー向けのテスト専用広告ユニット ID を使うと簡単です。 ca-app-pub-3940256099942544/2934735716
と書いてあったので、Info.plist
のGADApplicationIdentifier
を Debug と Release で切り替えできるように作ってみたが、間違えて前者にテストの広告ID、後者に本番のアプリIDを指定して作ってしまった。
そのため、Admob の SDK 初期化時にクラッシュが発生してしまった
Q: SwiftUI で Admob を表示できる?
A. できる。UIViewRepresentable
を使って表示する。
Cannot find 'kGADAdSizeBanner' in scope
というコンパイルエラーが発生するのだが、どうして?どう対応したらいい?
Q: A. kGADAdSizeBanner
はGADAdSizeBanner
へ名前が変わっているので、そちらを使う。
Q: 広告IDを環境ごとに切り替えるにはどうしたらいいか?
A. Build Settings に環境ごとに定義し、Info.plistに変数を定義、コードから参照できるようにすると良い
AdMob and Firebase are in use in this app, but are not linked. For analytics data consistency and integrity, it is highly recommended that you link your AdMob app to the corresponding Firebase app and re-download the GoogleServices-Info.plist file. See https://support.google.com/admob/answer/6383165 for more information.
のエラーが発生した。どうすればいいか?
Q: A. GoogleServices-Info.plistを再ダウンロードして、今あるものと入れ替える。Admob と Firebaseをリンクする前にダウンロードしてしまったことで起きたと考えられる。
Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated
のエラーが発生した。どうすればいいか?実機では発生せず、シミュレータでのみ発生。
Q: A. ターミナルの設定が悪いっぽい?設定を変えればログに出なくなるが、一旦そのままにしてみた。
No pending snapshot to activate.
のエラーが発生した。どうすればいいか?
Q: A. 不明。。
No factory registered for id
のエラーが発生した。どうすればいいか?実機では発生せず、シミュレータでのみ発生。
Q: A.
49 required SKAdNetwork identifier(s) missing from Info.plist.
のエラーが発生した。どうすればいいか?実機では発生せず、シミュレータでのみ発生。
Q: A.
target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit
のエラーが発生した。どうすればいいか?実機では発生せず、シミュレータでのみ発生。
Q: A. 考え中
GADApplicationIdentifier
を本番用ではなくテスト用のca-app-pub-3940256099942544~1458002511
にすることで出なくなったが、IDFA メッセージも表示されなくなってしまった。。
App Transport Security
のInfo.plistの設定は何かしないといけないのか?
Q: A. 以下のドキュメントには設定するように記載があるが、ATSをオフにすることのデメリットを考慮すると、広告のためだけであればオフにする方がリスクがあるので特に設定しなかった。そのままでも広告は表示されたため。Proxymanで通信内容を確認してみたが、http通信をしているものはぱっと見はなかったので特に影響受けないのでは。。?真相はわからないけど、オフにするセキュリティのリスクが大きいと判断した。
Q: 審査提出する時、Appのプライバシーには何を入力すべきか?
A. 公式ドキュメントが出ているのでそれに従って頑張る
公式:
Q: app-ads.txtに関する警告が表示されている。どう対応すればいいのか
A. App Store ConnectのマーケティングURLと同じドメインに、app-ads.txtを配置する。
公式ドキュメント
ビジネス面で検討したこと・困ったこと
Q: Admob の収入を上げたい・不快な広告が表示されないようにしたい。どうすればいいか?
A. 広告インプレッション数が多く、収益割合が低いカテゴリをブロックする。また表示したくない広告のカテゴリをブロックする。
また全種類の広告を、ユーザーの操作の妨げにならないように導入する。