AdMob 插页式广告已显示但无法点击

2023-12-25

我有一个应用程序,可以在某些活动关闭时显示插页式广告。我使用不同的活动来展示广告。到目前为止,它正确显示了广告,但当我点击广告时没有任何反应。我已经在许多设备上进行了测试,测试人员报告了相同的行为。日志中没有错误。如果我使用调试版本或上传到 Play 商店的签名 APK(如果重要的话,它会以 alpha 状态发布),情况也是一样。我使用最新的 Play 商店服务 SDK。

这可能是什么原因?

我显示广告的活动(我在实际代码中使用正确的单位 ID)

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

public class AdFullScreen extends Activity {

    private static final String TAG = "AdFullScreen";
    private static final String AD_UNIT_ID = "my-unit-id";

    private InterstitialAd interstitialAd;
    ProgressBar prgrssBrAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.ad_layout);

        prgrssBrAd = (ProgressBar) findViewById(R.id.prgrssBrAd);

        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(AD_UNIT_ID);

        interstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                Log.e(TAG, "onAdLoaded");
                prgrssBrAd.setVisibility(View.GONE);
                if (interstitialAd.isLoaded()) {
                    interstitialAd.show();
                } else {
                    Log.e(TAG, "Interstitial ad was not ready to be shown.");
                    finish();
                    return;
                }
            }

            @Override
            public void onAdFailedToLoad(int errorCode) {
                String message = String.format("onAdFailedToLoad (%s)",
                        getErrorReason(errorCode));
                Log.e(TAG, message);
                finish();
                return;
            }

            @Override
            public void onAdClosed() {
                finish();
                return;
            }

            @Override
            public void onAdLeftApplication() {
                Log.e(TAG, "onAdLeftApplication");
                finish();
                return;
            }

        });

        LocationManager locationManager = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);
        String locationProvider = LocationManager.GPS_PROVIDER;
        Location lastKnownLocation = locationManager
                .getLastKnownLocation(locationProvider);
        if (lastKnownLocation == null) {
            locationProvider = LocationManager.NETWORK_PROVIDER;
            lastKnownLocation = locationManager
                    .getLastKnownLocation(locationProvider);
            Log.e(TAG, "Last location not available by GPS");
        } else {
            Log.e(TAG, "Last location available by GPS");
        }

        // Check the logcat output for your hashed device ID to get test ads on
        // a physical device.
        AdRequest.Builder bldr = new AdRequest.Builder();

        if (lastKnownLocation != null) {
            Log.e(TAG, "Last location available");
            bldr.setLocation(lastKnownLocation);
        } else {
            Log.e(TAG, "Last location not available by any provider");
        }
        AdRequest adRequest = bldr.build();
        // Load the interstitial ad.
        interstitialAd.loadAd(adRequest);
    }

    @Override
    public void onStart() {
        super.onStart();
        // The rest of your onStart() code.
    }

    @Override
    public void onStop() {
        super.onStop();
        // The rest of your onStop() code.
    }

    /** Gets a string error reason from an error code. */
    private String getErrorReason(int errorCode) {
        String errorReason = "";
        switch (errorCode) {
        case AdRequest.ERROR_CODE_INTERNAL_ERROR:
            errorReason = "Internal error";
            break;
        case AdRequest.ERROR_CODE_INVALID_REQUEST:
            errorReason = "Invalid request";
            break;
        case AdRequest.ERROR_CODE_NETWORK_ERROR:
            errorReason = "Network Error";
            break;
        case AdRequest.ERROR_CODE_NO_FILL:
            errorReason = "No fill";
            break;
        }
        return errorReason;
    }
}

布局(我尝试不使用任何具有相同结果的布局)。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ProgressBar
        android:id="@+id/prgrssBrAd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

</RelativeLayout>

如果您能提供任何帮助,我将不胜感激。

UPDATE

看来我设法找到了问题所在。与AndroidManifest配置有关: 老的,广告不可点击:

<activity
    android:name="com.google.android.gms.ads.AdActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
    android:launchMode="singleInstance" />

好一个,工作正常:

<activity
    android:name="com.google.android.gms.ads.AdActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

很抱歉让您感到困惑,我不记得我何时进行了更改。


它肯定会起作用

public class AdFullScreen extends Activity implements AdListener {      


private InterstitialAd interstitial;
private String MY_INTERSTITIAL_UNIT_ID = "your unit id here";

@Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.ad_layout);

 interstitial = new InterstitialAd(this, MY_INTERSTITIAL_UNIT_ID);
    // Create ad request
    AdRequest adRequest = new AdRequest();
    // Begin loading your interstitial
    interstitial.loadAd(adRequest);
    // Set Ad Listener to use the callbacks below
    interstitial.setAdListener((AdListener) this);

@Override
public void onDismissScreen(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onLeaveApplication(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onPresentScreen(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onReceiveAd(Ad add) {
    // TODO Auto-generated method stub
    if (add == interstitial) {

        interstitial.show();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AdMob 插页式广告已显示但无法点击 的相关文章

随机推荐

  • Angular 2 (keydown.enter) 无法阻止Default()

    the event preventDefault 我使用时不起作用 keydown enter 在模板中 这是演示 https plnkr co edit GZrVt7l6BEO2uHfWFoTQ p preview https plnkr
  • Spring-data-cassandra 1.3.4 与 Cassandra 3.x 不兼容

    我尝试使用 Spring data cassandra 1 3 4 以及最新的 cassandra driver core 3 0 0 在 Cassandra 2 1 12 作为 DSE 4 8 4 的一部分 上 一切正常 因为相同的 sp
  • React 是否保证“props”对象引用保持稳定?

    最近我看到类似于以下人为示例的代码 const MyComp props gt const prevProps setPrevProps useState props if props prevProps setPrevProps prop
  • 编写一个监听 USB 端口的小实用工具,需要建议

    我有一个可以循环工作的硬件 它配备了专有的软件工具 让用户可以通过 USB 从 PC 控制它 用户定义每个周期的长度 在每个周期开始时 软件工具通过 USB 快速向硬件发出一系列命令 然后进入空闲模式 等待下一个周期 还有第二个硬件需要与第
  • 通过静态类访问 HttpContext 可以“正确”处理不同的请求

    I found 本文 https www quickdevnotes com better approach to use httpcontext outside a controller in net core 2 1 在尝试解决需要非控
  • 图片上传:iPhone客户端-Django-S3

    我有一个关于从客户端 在本例中为 iPhone 应用程序 上传到 S3 的一般性问题 我正在使用 Django 在 EC2 实例上编写 Web 服务 以下方法是将文件上传到 S3 的最低限度方法 对于较小的文件 jpg 或 png def
  • 判断手机是否重启过

    我正在尝试检测自上次设置首选项值以来 Android 设备是否已重新启动 理想情况下 我想在没有android permission RECEIVE BOOT COMPLETED允许 我考虑的一种方法是存储另一个包含某种会话 ID 的首选项
  • 是否有更好的方法来处理穿过反子午线(日界线)的空间多边形?

    TL DR R中处理在纬度 180 处与反子午线相交 重叠的空间多边形并将其沿该子午线切割成两部分的最佳方法是什么 Preface 这将是一篇很长的文章 但只是因为我将包含大量代码和图形来进行说明 我将向您展示我的目标是什么以及我通常如何实
  • 有没有办法改变海龟中文本框的位置?它总是显示在我的左上角,但我希望它出现在底部中心

    import turtle screen turtle Screen global answer answer screen textinput Welcome to the game What s your name Here is 出现
  • 使用 angularjs 将数据附加到 json-ld

    我是 angularjs 的新手 我开始这个项目是为了了解有关这个框架的更多信息 我制作了一个将数据放入 json ld 的应用程序 我的应用程序可以将数据添加到 json ld 但没有我想要的输出格式 这个 gt 这是我的 html和角度
  • MySQL获取最新记录检查两列[重复]

    这个问题在这里已经有答案了 我有这样的结果 我需要获取每个骑师的最新比赛 首先获取比赛的最大日期 然后获取最大比赛编号 结果应该是这样的 注 数据库非常庞大 查询应该非常快 当您说 最大比赛号码 时 您是指最新比赛的号码 日期最近的比赛 还
  • 自定义 HighCharts 中各个系列的颜色

    我正在使用 HighCharts 绘制折线图 并尝试更改每个系列的线条颜色 我确实找到了这个例子here https stackoverflow com questions 5727419 highcharts is it possible
  • iOS - 获取字母的“真实”高度

    我正在尝试在 UIView 上布局文本 黄色区域是带有背景色的UILabel的边框 当我使用 sizeWithFont 时 我得到了这个 它在字母上方有一个非常大的空间 当我使用font pointSize我得到这个 i 这很好 BUT当我
  • MySQL 数据库中有一列 LONGTEXT 的内存消耗

    我正在 MySQL 数据库中创建一个日志表 其中一个字段将仅在大约 5 的日志中使用 并将包含堆栈跟踪和其他供开发人员使用的冗长信息 我正在考虑使用 LONGTEXT 字段 但我想知道使用它是否会使我的数据库增长得非常快 即使该列中有 95
  • 任何生成 xsl:fo 的 javascript(基于网络)所见即所得编辑器

    我很难找到可生成 XSL FO 的 OSS 或基于商业网络 javascript 的 WYSIWYG 编辑器 我希望编辑能够做 向用户呈现常见的文本编辑器界面 与我当前正在输入以向 SO 提交此问题的编辑器不同 用户能够定义 XSL FO
  • 禁用 jQuery UI Datepicker 中的未来日期

    是否可以禁用从今天开始的未来日期 假设今天是 2010 年 10 月 23 日 那么 2010 年 10 月 24 日以后将被禁用 抱歉 我对 jQuery 和 JavaScript 很陌生 确实是的 日期选择器具有 maxdate 属性
  • 反应原生模态,避免在键盘打开时调整视图大小(Android)

    我正在使用react native Modal 其中包含一个View 该视图有一些 TextInput 元素 当键盘弹出时 视图元素全部折叠以适应剩余空间 但我根本不希望视图发生变化 这确实not发生在IOS上 而且 它确实not发生在同一
  • 如何管理多个 apache 服务器上的单个 PHP5 会话?

    您好 我必须从多个网络服务器检索数据 首先 我以用户身份登录我的网站 成功登录后 我必须从不同的网络服务器获取数据并显示 如何与多个服务器共享单个会话 我怎样才能实现这个目标 当我第一次登录时 它会创建会话并将会话 ID 保存在该服务器的临
  • 如何通过环境变量添加气流池?

    就像可以通过名称后面的环境变量设置连接一样AIRFLOW CONN conn id 有没有办法设置池 这样我就可以设置一个本地 Docker 测试环境 并填充所有配置 None
  • AdMob 插页式广告已显示但无法点击

    我有一个应用程序 可以在某些活动关闭时显示插页式广告 我使用不同的活动来展示广告 到目前为止 它正确显示了广告 但当我点击广告时没有任何反应 我已经在许多设备上进行了测试 测试人员报告了相同的行为 日志中没有错误 如果我使用调试版本或上传到