Android

[앱, 타사 광고, 기기 기능 방해 정책 위반] 에 대한 처리

 

앱, 타사 광고, 기기 기능 방해 정책위반하여 마켓등록이 불가할때 확인할 사항 !!

위 정책에 위배되는 부분이 없는데 정책위반으로 마켓등록이 불가할때는 전면광고 호출 코드를 의심하라.

@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” />

Leave a Reply

error: Content is protected !!