Google Play Store に公開しているアプリに対しAdMobから「プログラムポリシーに準拠していない・・・」旨のメールが届きました。
コンテンツの一部が広告に重なっているとのことですが、広告自体はまともに表示されているので、どのように修正すれば良いのか解りませんでした。
複数のアプリを公開していて、今までこのようなことは無かったので、他のアプリとのレイアウトの違いを比べたうえで、ようやく理解することが出来ました。
冷静になって考えてみれば解ることなのですが、原因はFrameLayoutによるものでした。
というより私自身のFrameLayoutに対する理解が足りなかったのが原因です。
私はアプリ画面の背景に画像をいっぱいに表示させるためレイアウトファイルの一番最初にImageViewを置き、Width、Height 共にmatch_parent、scaleTypeをcenterCropで画像を縦横比を維持したままセンターに配置し、その後にFrameLayout、FrameLayoutの中にLinearLayoutをvertical指定で置き、各UIパーツを縦並びで配置しました。
広告のAdViewはFrameLayoutの後に置いていました。
要するに広告の上にFrameLayoutのレイヤーが重なっていて、視覚的には広告が見えてはいるものFrameLayoutのレイヤーが邪魔をして広告をタップしても反応しない状態になっていたのです。
自身で広告をタップする行為はタブーの概念が邪魔をして気づけなかったのもあります。
テスト広告を使ってタップしてみればすぐに気づけた筈です。
AdViewに関してはandroid:layout_centerHorizontal=”true” と android:layout_alignParentBottom=”true” を指定していれば画面下部に表示してくれるので、おざなり状態にしていたのも、うかつでした。
結局、FrameLayoutにapp:layout_constraintBottom_toTopOf=”@+id/adView” を追加し、FrameLayoutがAdViewに重ならないようにして再審査をリクエストしたら「お客様のアプリの審査が完了いたしましたが、ポリシー違反は発見されませんでした。 」となったので良かったのですが、重なりは重なりでもレイヤーの重なりだとはすぐに気づきませんでした。
背景画像はbackgroundで表示させることも出来ますが、どうしても画像の縦横比を維持したまま表示させたかったのでImageViewの上にFrameLayoutで各パーツを載せていく方法を取りました。
今更ながらですが、AdView自体もFrameLayout内のLinearLayoutで表示させるべきだったかと思っています。