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で表示させるべきだったかと思う。