Android 谷歌拒绝我的应用程序并声称存在广告欺诈
我正在我的应用程序中使用Admob的插入式广告。谷歌拒绝了我的应用程序并声称存在广告欺诈。他们说我的应用程序在退出应用程序后会显示广告。 我已经更改了我的广告代码,以确保广告加载和广告显示仅在活动正在运行且应用程序位于前台时发生。但他们还是拒绝了我的应用程序,并声称广告欺诈。 我只是在做一些基本的中间代码:Android 谷歌拒绝我的应用程序并声称存在广告欺诈,android,admob,interstitial,Android,Admob,Interstitial,我正在我的应用程序中使用Admob的插入式广告。谷歌拒绝了我的应用程序并声称存在广告欺诈。他们说我的应用程序在退出应用程序后会显示广告。 我已经更改了我的广告代码,以确保广告加载和广告显示仅在活动正在运行且应用程序位于前台时发生。但他们还是拒绝了我的应用程序,并声称广告欺诈。 我只是在做一些基本的中间代码: implementation 'com.google.android.gms:play-services-ads:19.7.0' public class AdManager {
implementation 'com.google.android.gms:play-services-ads:19.7.0'
public class AdManager {
boolean activityStarted;
public void onStart() {
activityStarted=true;
}
public void onStop() {
activityStarted=false;
}
public void initializeAds(Context context) {
MobileAds.initialize(context);
MobileAds.setAppMuted(true);
List<String> testDeviceIds = Arrays.asList("some id");
RequestConfiguration configuration =
new RequestConfiguration.Builder().setTestDeviceIds(testDeviceIds).build();
MobileAds.setRequestConfiguration(configuration);
}
public InterstitialAd getInterstialAdWithUnit(Context context) {
InterstitialAd mInterstitialAd = new InterstitialAd(context);
mInterstitialAd.setAdUnitId(BuildConfig.INTERSTITIAL_AD_UNIT_ID);
setAdListener(mInterstitialAd);
checkNewAdNeeded(mInterstitialAd);
return mInterstitialAd;
}
public void setAdListener(InterstitialAd mInterstitialAd) {
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
super.onAdClosed();
checkNewAdNeeded(mInterstitialAd);
}
});
}
public void showAdIfNeeded(InterstitialAd mInterstitialAd) {
if (activityStarted && mInterstitialAd.isLoaded())
mInterstitialAd.show();
else {
checkNewAdNeeded(mInterstitialAd);
}
}
public void requestNewInterstitial(InterstitialAd mInterstitialAd) {
AdRequest adRequest = new AdRequest.Builder()
.build();
mInterstitialAd.loadAd(adRequest);
}
public void checkNewAdNeeded(InterstitialAd mInterstitialAd) {
//do not load ad when acticity is stopped
if (activityStarted && !mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded())
requestNewInterstitial(mInterstitialAd);
}
}
public class FullscreenActivity extends AppCompatActivity {
AdManager adManager=new AdManager();
public void onButtonClicked() {
//call another activity when Button is clicked and wait for return to display ad
activity.startActivityForResult(intent, requestCode);
runOnUiThread(new Runnable() {
@Override
public void run() {
adManager.checkNewAdNeeded(mInterstitialAd);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//back from other activity, try to display ads only if app has focus
if ( from activity xy) {
if (mHasFocus)
showAdWhileHasFocus();
else
showAdWhenHasFocus=true;
}
}
@Override
protected void onStart() {
super.onStart();
adManager.onStart();
}
@Override
protected void onStop() {
adManager.onStop();
super.onStop();
}
boolean showAdWhenHasFocus;
public void showAdWhileHasFocus() {
showAdWhenHasFocus=false;
adManager.showAdIfNeeded(mInterstitialAd,promotionAndAdsEvent);
}
boolean mHasFocus=false;
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (!hasFocus) {
} else {
if (showAdWhenHasFocus)
showAdWhileHasFocus();
}
super.onWindowFocusChanged(hasFocus);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
implementation'com.google.android.gms:play-services-ads:19.7.0'
公共类管理员{
布尔活动开始;
public void onStart(){
activityStarted=true;
}
公共void onStop(){
activityStarted=false;
}
公共void初始值(上下文){
MobileAds.initialize(上下文);
MobileAds.setappmute(true);
List testDeviceID=Arrays.asList(“某些id”);
请求配置=
新建RequestConfiguration.Builder().SetTestDeviceID(TestDeviceID.build();
MobileAds.setRequestConfiguration(配置);
}
public interstitalad getInterstitaladWithUnit(上下文){
间隙标注Minterstitalad=新间隙标注(上下文);
minterstitalad.setAdUnitId(BuildConfig.INTERSTITIAL\u AD\u UNIT\u ID);
setAdListener(minterstitalad);
检查所需的新设备(Minterstitalad);
返回Minterstitalad;
}
公共无效setAdListener(中间层和中间层){
minterstitalad.setAdListener(新的AdListener(){
@凌驾
已关闭的()上的公共无效{
super.onAdClosed();
检查所需的新设备(Minterstitalad);
}
});
}
需要显示的公共空白(中间空白和最小空白){
if(activityStarted&&minterstitalad.isload())
minterstitalad.show();
否则{
检查所需的新设备(Minterstitalad);
}
}
公共无效请求新填隙式(填隙式和Minterstitalad){
AdRequest AdRequest=新建AdRequest.Builder()
.build();
Minterstitalad.loadAd(地址);
}
公共无效检查新增需要(填隙式和mInterstitialAd){
//当活动停止时,不要加载广告
如果(activityStarted&!Minterstitalad.isLoading()&&!Minterstitalad.isLoaded())
请求新间质(Minterstitalad);
}
}
公共类FullscreenActivity扩展了AppCompatActivity{
AdManager AdManager=新的AdManager();
public void onButtonClicked(){
//单击按钮时调用另一个活动,并等待返回以显示广告
activity.startActivityForResult(意图、请求代码);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
adManager.checkNewAdNeeded(minterstitalad);
}
});
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
//从其他活动返回,仅当应用程序有焦点时才尝试显示广告
如果(来自活动xy){
如果(mHasFocus)
showAdWhileHasFocus();
其他的
showAdWhenHasFocus=true;
}
}
@凌驾
受保护的void onStart(){
super.onStart();
adManager.onStart();
}
@凌驾
受保护的void onStop(){
adManager.onStop();
super.onStop();
}
布尔值显示当焦点;
显示的公共无效信息,而焦点为(){
showAdWhenHasFocus=false;
需要显示的管理员(MINTERSTIALAD、促销和活动);
}
布尔值mHasFocus=false;
@凌驾
WindowFocusChanged上的公共无效(布尔hasFocus){
如果(!hasFocus){
}否则{
如果(显示何时为焦点)
showAdWhileHasFocus();
}
super.onWindowFocusChanged(hasFocus);
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
}
}
我也有同样的问题。您是否尝试过在启动时不显示初始广告,而是在动作上显示。我认为谷歌的意思是,当广告弹出时,你可以错误地点击它。我不会在启动时显示任何广告。我从另一个活动返回后正在显示广告。我没有检查onActivityResult的resultCode,因此如果其他活动处于打开状态,他们可能会运行一个测试来关闭所有内容并退出应用程序,然后在应用程序退出之前显示间隙。我上传了一个版本,检查了resultCode,并将查看它是否通过。不,仍然被拒绝。我的更新现在是实时的。对我来说,它可以将中间广告从应用程序开始移动到另一个页面。我认为,如果你的插播广告让用户感到惊讶或中断了工作流程,问题也会出现。你可以在这里阅读指导原则:我的应用程序现在也是life,但这只是因为我的上诉已经获得批准。我的下一个共享相同代码库的应用程序再次被拒绝。我已经玩了4个应用程序了。我一开始没有插播广告。我认为他们的分析工具只是有一个错误的警报。