Android google admob Timeout for show call succeed 问题解决

news2024/11/25 15:21:25

项目场景:

项目中需要接入 google admob sdk 实现广告商业化


问题描述

在接入Institial ad 时,onAdLoaded 成功回调,但是onAdFailedToShowFullScreenContent 也回调了错误信息 “Timeout for show call succeed.”

        InterstitialAd.load(activity,
            "ca-app-pub-3940256099942544/1033173712",
            AdRequest.Builder().build(),object : InterstitialAdLoadCallback() {
                override fun onAdLoaded(interstitialAd: InterstitialAd) {
                    super.onAdLoaded(interstitialAd)
                    Log.i("nh_ad", "admob interstitial onAdLoaded")
                    // 加载成功
                    interAd = interstitialAd
                    // 设置广告事件回调
                    interAd?.fullScreenContentCallback = object : FullScreenContentCallback() {
                        override fun onAdImpression() {
                            super.onAdImpression()
                          
                            Log.i("nh_ad", "admob interstitial onAdImpression")
                         
                        }

                        override fun onAdShowedFullScreenContent() {
                            super.onAdShowedFullScreenContent()
                            
                            Log.i("nh_ad", "admob interstitial onAdShowedFullScreenContent")
                        }

                        override fun onAdClicked() {
                            super.onAdClicked()
                           
                            Log.i("nh_ad", "admob interstitial onAdClicked")
                           
                        }

                        override fun onAdDismissedFullScreenContent() {
                            super.onAdDismissedFullScreenContent()
                            
                            Log.i("nh_ad", "admob interstitial onAdDismissedFullScreenContent")
                            interAd = null
                          
                        }

                        override fun onAdFailedToShowFullScreenContent(adError: AdError) {
                            super.onAdFailedToShowFullScreenContent(adError)
                            
                            Log.e("nh_ad", "admob interstitial onAdFailedToShowFullScreenContent error:${adError.message}")
                            interAd = null
                          
                        }
                    }
                  
                }

                override fun onAdFailedToLoad(loadAdError: LoadAdError) {
                    super.onAdFailedToLoad(loadAdError)
                    Log.e("nh_ad", "admob interstitial onAdFailedToLoad error:${loadAdError.message}")
                    interAd = null
                    // 加载失败
                 
                }
            })

原因分析:

问题困扰很久, 使用官网 Demo 可以正常显示结果的,网络上搜索不到相关问题。

后来对比了下 官网 Demo 和自己项目的差异,不同点在于我项目是在子进程加载和显示广告的,

尝试去掉子进程后,果然不再报错,基本可以确定这个就是和多进程有关。。

但是搜索 Admob sdk 技术文档,里面并没有接口是设置支持多进程的。。又陷入了无助中

于是我翻阅了 Admob sdk 的源码,看到了用于展示广告的 AdActivity 在 Sdk AndroidManifest 里的声明为:

 猜想,能否在自己App的 AndroidManiest里重新声明这个AdActivity 并且加上支持多进程属性?

解决方案:

在 App 的 AndroidManifest 里重新声明 Admob 的广告 Activity,增加支持多进程属性 android:multiprocess = "true"

        <activity
            android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:exported="false"
            android:multiprocess="true"
            android:theme="@android:style/Theme.Translucent"
            tools:ignore="MissingClass" />

这个坑困扰了大半天,特意记录下~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法刷题之路

刷题历程 - - - 基本数据结构 - - -数组、字符串、堆、栈、队列、链表739.每日温度&#xff08;栈&#xff09;155. 最小栈20. 有效的括号581.最短无序连续数组169. 多数元素&#xff08;数组&#xff09;136.只出现一次的数字128.最长连续序列560.和为k的子数组&#xff08;组…

yolo使用说明

yolo-v5代码 一、环境准备 yolo-v5更像是一个工程 算法和v4差不多&#xff0c;只是细节有所不同 拉取代码 环境要求 因为v6用到了torch1.6中的混合精度 二、数据准备 训练使用的是coco数据集 coco数据集很大&#xff0c;训练起来费时间&#xff0c;可以直接用自己数据集来做…

三、axios+vue

Axios 导入&#xff1a; <script src"https://unpkg.com/axios/dist/axios.min.js"></script> 基础语法&#xff1a; axios.get(?keyvalue&key2value2).then(function(response){},function(err){} axios.post(地址&#xff0c;{key:value,key2…

IDEA常用插件介绍

1.CodeGlance&#xff08;CodeGlance Pro&#xff09; 安装后&#xff0c;重新启动编译器即可。 CodeGlance是一款非常好用的代码地图插件&#xff0c;可以在代码编辑区的右侧生成一个竖向可拖动的代码缩略区&#xff0c;可以快速定位代码的同时&#xff0c;并且提供放大镜功能…

DARPA TC-engagement5数据集解析为json格式输出到本地

关于这个数据集的一些基本信息就不赘述了&#xff0c;参考我之前的博客。DARPA TC-engagement5数据集官方工具可视化 官方给的工具是将解析的数据存到elasticsearch的&#xff0c;但是数据集的解压增长率非常恐怖&#xff0c;对空间要求很高。因此针对这个问题&#xff0c;我对…

win10配置rocketmq

下载地址&#xff1a;下载 | RocketMQ ,版本根据自己情况定&#xff0c;我选用的是4.7.* 1、下载后解压。D:\rocketmq-all-4.7.0-bin-release 2、需要注意一下jdk安装目录的目录名不能有空格&#xff0c;否则会报错找不到JAVA 3、环境变量新增ROCKEMQ_THOMED:\rocketmq-all-4…

MySQL语句判断数据库数据重复情况,新增、删除、不变。

判断 7月8月两个月数据对比情况&#xff0c;新增、删除(离职)、重复。 根据manager_name,gg_name,employer,department,historical_office判断出是否重复数据 -- ●- 新增或离职 -- ●- 创建临时表CREATE TABLE temp_table (SELECT id,manager_name,gg_name,employer,departme…

4用opencv玩转图像2

opencv绘制文字和几何图形 黑色底图 显示是一张黑色图片 使用opencv画圆形 #画一个圆 cv2.circle(imgblack_img,center(400,400),radius100,color(0,0,255),thickness10) 画实心圆 只需要把thickness-1。 cv2.circle(imgblack_img,center(500,600),radius50,color(0,0,255),t…

项目优化后续 ,手撸一个精简版VUE项目框架!

之前说过项目之前用的vben框架&#xff0c;在优化完性能后打包效果由原来的纯代码96M变成了56M&#xff0c;后续来啦&#xff0c;通过更换框架&#xff0c;代码压缩到了36M撒花~ 现在就来详细说说是怎么手撸一个框架的&#xff01; 方案&#xff1a; 搭建一套 vite vue3 a…

系统架构设计师-软件架构设计(7)

目录 大型网站系统架构演化 一、第一阶段&#xff1a;单体架构 到 第二阶段&#xff1a;垂直架构 二、第三阶段&#xff1a;使用缓存改善网站性能 1、缓存与数据库的数据一致性问题 2、缓存技术对比【MemCache与Redis】 3、Redis分布式存储方案 4、Redis集群切片的常见方式 …

【C++】STL map和set用法基本介绍

map、set用法简介 前言正式开始set构造erasefindswapcountlower_bound 和 upper_boundlower_boundupper_bound equal_rangepair multiusetfinderasecount map构造insert[ ][ ]底层原理 multimap两道题目前K个高频单词两个数组的交集 前言 首先&#xff0c;使用map和set最少要了…

[golang gin框架] 45.Gin商城项目-微服务实战之后台Rbac微服务之角色权限关联

角色和权限的关联关系在前面文章中有讲解,见[golang gin框架] 14.Gin 商城项目-RBAC管理之角色和权限关联,角色授权,在这里通过微服务来实现角色对权限的授权操作,这里要实现的有两个功能,一个是进入授权,另一个是,授权提交操作,页面如下: 一.实现后台权限管理Rbac之角色权限关…

pom文件---maven

027-Maven 命令行-实验四-生成 Web 工程-执行生成_ev_哔哩哔哩_bilibili 27节.后续补充 一.maven下载安装及配置 1)maven下载 2) settings文件配置本地仓库 3)settings配置远程仓库地址 4)配置maven工程的基础JDK版本 5)确认JDK环境变量配置没问题,配置maven的环境变量 验证…

C++ 派生类成员的标识与访问——虚基类

当某类的部分或者全部直接基类是从另一个共同的基类派生而来时&#xff0c;在这些直接基类中从上一级共同基类继承来的成员就拥有相同的名称。在派生类的对象中&#xff0c;这些同名数据成员在内存中同时多个副本&#xff0c;同一个函数名会有多个映射。 可以通过作用域分辨符…

CISCO MDS 9148 SAN Switch 交换机命令配置方法:

前言 CISCO MDS 9148 SAN 交换机已经停产&#xff0c;但还是要掌握一下配置的方法&#xff1a; 升级款后面 9148S 或者 9100系列&#xff0c;但配置方式基本都差不多&#xff0c;掌握一个就好&#xff1a; 高性能和极具吸引力的价值 Cisco MDS 9148S 16G 多层光纤交换机是下…

24届近5年南京理工大学自动化考研院校分析

今天学长给大家带来的是南京理工大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、南京理工大学 ​ 学校简介 南京理工大学是隶属于工业和信息化部的全国重点大学&#xff0c;学校由创建于1953年的新中国军工科技最高学府——中国人民解放军军事工程学院&#xf…

用户权限提升Sudo

目录 前言 一、su的用法 二、sudo提权 总结 前言 sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt&#xff0c;reboot&#xff0c;su等等。换句话说通过此命令可以让非root的用户运行只有root才有权限…

vue 新学习 06 js的prototype ,export暴露,vue组件,一个重要的内置关系

部分内容参考的这篇文章 原文链接&#xff1a;https://blog.csdn.net/harry5508/article/details/84025146 写的很好。 01 在js中&#xff1a; 原型链 注意&#xff1a;构造函数.prototype实例化对象.__proto__&#xff0c;都是指向函数的原型。 export&#xff1a; -export用…

品牌宣传与媒体传播是声誉管理的主要方式之一

企业声誉是现如今影响品牌信任度、客户忠诚度的重要因素&#xff0c;也被视为企业的一种无形资&#xff0c;更影响着企业未来的发展。因此&#xff0c;企业声誉管理也日渐成为企业管理的重要课题之一&#xff0c;尤其在品牌营销管理领域。 什么是声誉管理&#xff1f;声誉管理有…

【果树农药喷洒机器人】Part1:研究现状分析以及技术路线介绍

本专栏介绍&#xff1a;付费专栏&#xff0c;持续更新机器人实战项目&#xff0c;欢迎各位订阅关注。 关注我&#xff0c;带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章&#xff01; 文章目录 一、项目背景二、国内外研究现状2.1 国内研究现状2.2 国外研究现状 三…