问题:违反干扰应用、第三方广告或设备功能政策

kor*_*hix 7 android admob google-play google-play-services

我试图只是在 Google Play 商店中发布我的应用程序的更新,我没有更改代码中的任何内容,只是增加了 gradle 中的“版本代码”并发布了应用程序,但应用程序被拒绝了(现在 3 次)由于违反此政策:

问题:违反干扰应用、第三方广告或设备功能政策

与您的应用相关联的广告不得干扰其他应用、广告或设备的操作,包括系统或设备按钮和端口。这包括叠加层、随播功能和小部件化广告单元。广告只能在为其提供服务的应用内展示。

下一步:

1- 通读干扰应用程序、第三方广告或设备功能政策并对您的应用程序进行适当更改。

2- 请务必移除在用户退出应用后或在用户按下后退按钮退出应用后出现的任何广告。

3- 确保您的应用符合所有其他开发者计划政策。如果有进一步的政策违规,可能会发生额外的强制执行。

登录您的 Play 管理中心并将更新提交到您的应用。

我已向支持人员询问有关我的应用程序的更多信息,为什么它被拒绝,因此当用户离开应用程序时没有显示广告。但是仅仅得到标准答案令人沮丧,就好像我们只是在和机器人交谈一样。

这是所谓的“谷歌支持”的答案:

...再次感谢您与 Google Play 团队联系。

尽管我很想提供帮助,但我无法提供更多信息或更好地回答您的问题。在我们之前的电子邮件中,我确保包含所有可用的信息......

如果您有关于 Play 开发者控制台的其他问题,请告诉我们。

我的应用程序是一个行情应用程序。在 MainActivity 中有一个 RecyclerView,其中列出了所有报价,当用户单击报价时,它会打开一个 viewPager-Activity,用户可以在其中查看报价并水平滚动以查看其他报价。

在 MainActivity 的屏幕底部有一个横幅广告。我计算用户点击报价的次数,如果计数器变为 5,我会在 MainActivity 和 viewPager-Activity 之间显示一个插页式广告。

这是mainActivity中插页式广告的代码。也许你们可以看到,如果我的应用程序真的违反了上述政策。

protected void onCreate(...){

 //Interstitial
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId(getString(R.string.ad_interstitial));
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
        mInterstitialAd.setAdListener(new AdListener(){
            @Override
            public void onAdClosed() {
                mInterstitialAd.loadAd(new AdRequest.Builder().build());
            }

            @Override
            public void onAdFailedToLoad(int i) {
                mInterstitialAd.loadAd(new AdRequest.Builder().build());
            }
        });

...

}
Run Code Online (Sandbox Code Playgroud)

当用户点击引号时,我使用此代码显示插页式广告

@Override
    public void onRecyclerViewItemClicked(int itemIndex) {
        if(imageClickedAdsCounter % 5 == 0) { // if it's the fifth time a quote is clicked
            showInterstitialAds();
        }
        ++imageClickedAdsCounter;
        Intent intent = new Intent(MainActivity.this, ImageViewPagerActivity.class);
        ...
        startActivity(intent);
    }

    private void showInterstitialAds(){
        if(mInterstitialAd != null && mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        }
    }

Run Code Online (Sandbox Code Playgroud)

我没有该onBackPressed()方法的任何实现。

我现在真的很沮丧,首先是因为所谓的“谷歌支持”根本没有帮助!!!因为我不知道我应该更改什么代码才能更新应用程序。所以任何帮助将不胜感激。先感谢您

小智 2

我遇到了同样的问题,问题是当用户最小化我的应用程序时我的广告也显示我通过检查我的应用程序是否在后台解决了问题

在 build.gradle 中添加库

implementation "android.arch.lifecycle:runtime:$arch_version"
implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"
Run Code Online (Sandbox Code Playgroud)

然后在调用 mInterstitial.show() 时检查应用程序是否不在后台

    if(ProcessLifecycleOwner.get().getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
    
        mInterstitialAd.show();
    } else {
        Log.d("AppInBackground", "App Is In Background Ad Is Not Going To Show");
    }
Run Code Online (Sandbox Code Playgroud)

有关要使用的 arch_version 和生命周期版本版本的更多信息,请检查此链接:https ://developer.android.com/jetpack/androidx/releases/lifecycle