[앱, 타사 광고, 기기 기능 방해 정책 위반] 에 대한 처리
앱, 타사 광고, 기기 기능 방해 정책위반하여 마켓등록이 불가할때 확인할 사항 !!
위 정책에 위배되는 부분이 없는데 정책위반으로 마켓등록이 불가할때는 전면광고 호출 코드를 의심하라.
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
callFullScreenAd(); // 전면광고 호출
final Dialog bDialog = new Dialog(this);
bDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
bDialog.setContentView(R.layout.dialog_banner_view);
if(bDialog.getWindow()!= null) {
bDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
}
LinearLayout linearLayout3 = bDialog.findViewById(R.id.linearLayout3);
linearLayout3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.linearLayout3) {
if (!MainActivity.this.isFinishing() && bDialog != null && bDialog.isShowing()) {
bDialog.dismiss();
}
}
}
});
LinearLayout linearLayout4 = bDialog.findViewById(R.id.linearLayout4);
linearLayout4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.linearLayout4) {
if (!MainActivity.this.isFinishing() && bDialog != null && bDialog.isShowing()) {
bDialog.dismiss();
}
finish();
}
}
});
if (!MainActivity.this.isFinishing()) {
bDialog.show();
}
}
}
[마켓등록이 거부된 코드]
public void callFullScreenAd){
MobileAds.initialize(this, "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxxxx");
mInterstitialAd = new InterstitialAd(MainActivity.this);
mInterstitialAd.setAdUnitId(getString(R.string.full_banner_id));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
mInterstitialAd.show();
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdOpened() {
// Code to be executed when the ad is displayed.
}
@Override
public void onAdLeftApplication() {
// Code to be executed when the user has left the app.
}
@Override
public void onAdClosed() {
// Code to be executed when when the interstitial ad is closed.
// Load the next interstitial.
}
});
}
[마켓등록이 거부된 코드] : 몇달 전만 해도 되었던 코드
public void callFullScreenAd(){
MobileAds.initialize(this, "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxxxx");
mInterstitialAd = new InterstitialAd(MainActivity.this);
mInterstitialAd.setAdUnitId(getString(R.string.full_banner_id));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
}
AdListener()사용을 제거하였다. 두 코드 모두 거부되었다.
해결책 : 나는 전면광고를 제거하였다.
또 하나의 팁 : 광고가 들어간 화면에는 반드시 스크롤뷰를 추가하라. 화면이 작은 휴대폰의 경우 광고가 컨텐츠와 겹처 위배될 수 있다. 하지만 구글은 정확한 원인을 알려주지 않는다. 휴대폰 해상도가 낮거나 작은 사이즈의 휴대폰에 대비하여 반드시 스크롤뷰에 컨텐츠를 넣고 광고와 분리하라
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView3"
android:layout_above="@+id/adb_layout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
...................
생략
</RelativeLayout>
</ScrollView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/adb_layout"
android:background="#132326"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_alignParentBottom="true"
android:gravity="center|bottom">
<com.google.android.gms.ads.AdView
android:id="@+id/adview_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/banner_ad_unit_id"
android:layout_centerHorizontal="true" >
</com.google.android.gms.ads.AdView>
</RelativeLayout>
또 하나의 팁 : AndroidManifest.xml 파일에 네트워크 액세스 권한을 부여하였는지 체크하라.인터넷 권한도 필요하지만 ACCESS_NETWORK_STATE권한 역시 필요하다. 이유는 모르겠다. ACCESS_NETWORK_STATE권한을 부여한 후에 정상적으로 마켓에 거부되지않고 등록되었다.
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />