FlutterでAdMob広告を表示する パート3
![](https://backport.net/blog/eyecatch/2019_9_29_flutter_firebase_admob.jpg)
FlutterにはPlatform Viewという、WidgetツリーにAndroid/iOSネイティブのViewを組み込む仕組みがあります。
ところが、FlutterのAdMob公式ライブラリはPlatform Viewに対応していません。なんでPlatform View使わないんだろう?と思うし、実際そういう要望のissueも散見されます。
以前にAdMob組み込みについて調べたときはFlutter側で頑張って制御するしかなさそう、という結論でした。
あれから時間も経ったことだし、現状どうなのか改めて調べてみました。
- firebase_admob が公式ライブラリ
- FlutterのWidgetではない(Platform Viewに対応していない)
- それ以外にも制約事項多めで融通が利かない
- Platform viewを使ってFlutterのWidget化してくれるライブラリがいくつか存在する
- admob_flutter とか native_ads とか
- Flutterの開発チームはPlatform viewとAdMobの組み合わせを非推奨としている
- ちゃんとテストされてないから予期せぬことが起きるかもよ、とのこと
- https://github.com/flutter/flutter/issues/12114#issuecomment-506800737
最後のヤツが厄介です。ちょっと長いですがGoogle翻訳による直訳。
FlutterのAndroidViewとUiKitViewはプラットフォームUIコンポーネントの低レベルの操作に依存しているため、モバイル広告エンジニアリングチームが予期せずテストを行わない方法でGoogle Mobile Ads SDKと対話することはほぼ保証されていないことに注意してください。 アプローチが現在機能しているように見えても、MRAID機能、クリエイティブに含まれるJSコード、およびインプレッションとクリックの測定で問題が発生する可能性があります。 インプレッションとクリックの統計情報の異常によりアカウントが停止される可能性があるため、これらの最後のものは特に重要です。
関係者とこれらの問題に取り組んでいますが、Flutterチームのfirebase_admobプラグインを使用することを強くお勧めします。また、プラットフォームビューを使用してAdMob広告を埋め込むプラグインの使用は推奨しません。
『インプレッションとクリックの統計情報の異常によりアカウントが停止される可能性がある』と言われちゃうと困りますよね。
結局のところ、現時点では
- 制約を受け入れて公式ライブラリを使う
- アカウント停止のリスクを背負って非公式ライブラリを使う
の2択。うーん、悩ましい。
自分の場合、非公式ライブラリ試してみてちゃんと動いていたんでいったんは採用したんですが、公式ライブラリに戻しました。アカウントBANされると困りますからね…
関連(するかもしれない)記事
おススメ