H5页面调用admob激励视频,用户获取奖励
https://developers.google.com/admob/android/rewarded?hl=zh-cn#set_the_fullscreencontentcallback
应用前提条件
- 使用 Android Studio 3.2 或更高版本
确保您应用的 build 文件使用以下值:
minSdkVersion
为16
或更高版本compileSdkVersion
为28
或更高版本
1,在您的项目级 build.gradle
文件中,同时在 buildscript
和 allprojects
两个部分中添加
buildscript {repositories {google()mavenCentral()}
}allprojects {repositories {google()mavenCentral()}
}
2,将 Google 移动广告 SDK 的依赖项添加到您的模块的应用级 Gradle 文件,通常为 app/build.gradle:
dependencies {implementation 'com.google.android.gms:play-services-ads:21.0.0'
}
3,将您的 AdMob 应用 ID(可在 AdMob 界面中找到)添加到应用的 AndroidManifest.xml
文件中。为此,请添加包含 android:name="com.google.android.gms.ads.APPLICATION_ID"
的 <meta-data>
代码。您可以在 AdMob 界面中找到您的应用 ID。对于 android:value
,请插入您自己的 AdMob 应用 ID,并用英文引号括起来。
测试ID:ca-app-pub-3940256099942544~3347511713
注意:开发工程一定要使用测试ID,不要使用线上ID,否则可能导致线上admob广告流量无效,最严重导致封号!
<manifest><application><!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 --><meta-dataandroid:name="com.google.android.gms.ads.APPLICATION_ID"android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/></application>
</manifest>
4,初始化广告和预加载激励视频
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;public class MainActivity extends AppCompatActivity {private AdRequest adRequest;private Handler mHandler;private WebView webview;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MobileAds.initialize(this, new OnInitializationCompleteListener() {@Overridepublic void onInitializationComplete(InitializationStatus initializationStatus) {}});adRequest = new AdRequest.Builder().build();loadJiliAd();//ad必须在主线程上,使用消息通知调用mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 0:// 显示广告showJiliad();break;case 1://测试加载jswebview.loadUrl("javascript:test()");break;default:break;}}};//加载页面 showWeb();}private void showJiliad(){if (mRewardedAd != null) {Activity activityContext = this;mRewardedAd.show(activityContext, new OnUserEarnedRewardListener() {@Overridepublic void onUserEarnedReward(@NonNull RewardItem rewardItem) {// 用户获得奖励Log.d("TAG", "The user earned the reward.");int rewardAmount = rewardItem.getAmount();String rewardType = rewardItem.getType();showJiangli("恭喜获得奖励");}});}else{showJiangli("广告拉取中,请稍候再试");loadJiliAd();}}private void showJiangli(String msg){Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();}private void showWeb(){//实例化WebView对象webview = new WebView(this);//设置WebView属性,能够执行Javascript脚本WebSettings webSettings = webview.getSettings();webSettings.setJavaScriptEnabled(true);//加载页面 webview.loadUrl("https://xxx.com/");//WebAppInterface 是我们自定义的一个类,通过实例化一个WebAppInterface 对象来和html进行绑定WebAppInterface webAppInterface = new WebAppInterface(this,mHandler);webview.addJavascriptInterface(webAppInterface, "Android");webview.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url){view.loadUrl(url);return true;}});webview.setWebViewClient(new WebViewClient(){Random ra =new Random();int r = ra.nextInt(20) + 1 ;@Overridepublic void onPageFinished(WebView view, String url){//结束super.onPageFinished(view, url);Log.d("TAG", "加载结束");if(r == 10){showAD();}}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon){//开始super.onPageStarted(view, url, favicon);Log.d("TAG", "加载开始");num ++;if(r == 6){if (mInterstitialAd != null) {showAD();}}else if(num >= 6){if (mInterstitialAd != null) {num =0;showAD();}else{Log.d("TAG", "广告未加载成功");}}Log.d("TAG", "加载NUM:" + String.valueOf(num));}});private void loadJiliAd(){RewardedAd.load(this, "ca-app-pub-3940256099942544/5224354917",adRequest, new RewardedAdLoadCallback() {@Overridepublic void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {// Handle the error.Log.d("TAG", loadAdError.toString());mRewardedAd = null;}@Overridepublic void onAdLoaded(@NonNull RewardedAd rewardedAd) {mRewardedAd = rewardedAd;Log.d("TAG", "Ad was loaded.");mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {@Overridepublic void onAdClicked() {// 在为广告记录点击时调用。Log.d("TAG", "Ad was clicked.");}@Overridepublic void onAdDismissedFullScreenContent() {// 当广告被关闭时调用.// 将广告引用设置为 null,这样您就不会再次展示广告。Log.d("TAG", "Ad dismissed fullscreen content.");mRewardedAd = null;}@Overridepublic void onAdFailedToShowFullScreenContent(AdError adError) {// 广告无法展示时调用Log.e("TAG", "Ad failed to show fullscreen content.");mRewardedAd = null;}@Overridepublic void onAdImpression() {// 在为广告记录展示时调用Log.d("TAG", "Ad recorded an impression.");}@Overridepublic void onAdShowedFullScreenContent() {// 显示广告时调用.Log.d("TAG", "Ad showed fullscreen content.");}});}});}
}
6,webAppInterface类
public class WebAppInterface {Activity mContext;Handler mHandler;/*** Instantiate the interface and set the context*/WebAppInterface(Activity c,Handler r) {mContext = c;mHandler = r;}/*** js调用Android的函数*/@JavascriptInterfacepublic void startFunction() {Toast.makeText(mContext,"我是安卓原生的弹窗",Toast.LENGTH_SHORT).show();//调用激励视频广告Message msg = new Message();msg.what = 0;mHandler.sendMessage(msg);}/*** js调用Android的函数并给Android原生传递一个参数*/@JavascriptInterfacepublic void startFunction(String arg) {Toast.makeText(mContext,arg,Toast.LENGTH_SHORT).show();}
}
7,html调用激励奖励
<input type="button" value="点击调用android代码,拉取激励视频" onclick="window.Android.startFunction()"/>
整体流程结束,业务代码可按需自行添加
H5页面调用admob激励视频,用户获取奖励相关推荐
- 微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音
微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音 1.目前的需求是什么 2.都踩了那些坑 1.小程序 2.h5语音提示 3.语音合成声音录制不进去,ios有时候是麦克风,有时 ...
- java与js交互视频_Android与H5交互—Java调用Js、Js调Java、H5页面调用Android播放视频...
content="ANZO,GAME,LOL,DNF,DOTA,撸啊撸,地下城与勇士,掌游宝,攻略,宝典,模拟器,加点,战报,英雄,最新,最全,最强,视频"> content ...
- H5页面调用微信支付
1.H5页面使用微信支付,首先需要注册微信公众号,在设置与开发>公众号设置>功能设置中配置业务域名.JS接口安全域名.网页授权域名.支付功能页面需在此域名链接下的页面. 2.加入域名后,就 ...
- 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?
关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码. 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什 ...
- 微信端H5页面调用分享接口
最近公司做了一个给学生投票的H5页面,主要是在微信端使用,需要添加微信分享功能: 本文章主要是记录调用微信分享接口需要注意的事项: 1.前端用的angular1框架,首先需要在index页面引入微信接 ...
- 微信小程序webview(H5页面)调用微信小程序支付
1.业务描述:微信小程序商城入口进入的页面是商城H5页面,在H5页面进行微信支付如何实现: 2.微信小程序(webview访问H5页面)必须使用微信小程序支付: 如何实现以及实现方式以及支付后页面返回 ...
- 微信h5页面调用第三方位置导航
微信h5页面拉起第三方导航应用 需要准备的: 通过微信认证的公众号 有备案过的域名 背景:微信公众号点击菜单栏跳到h5页面,需要用到导航功能 需求:当用户点击导航按钮时,跳转到第三方app进行导航 参 ...
- webview调用ios或者安卓的方法(内嵌h5页面调用app原生方法)
1.配合使用调用app原生的方法(h5页面不需要回调和数据) 实例1 //通知客户端,token失效 callTokenLostToApp(){let boswer=vm.config.getBrow ...
- 小程序接入h5页面_原生小程序接入H5页面,请求后台接口,获取数据
项目开发中赶上三端接入h5的需求,因此本身动手作h5页面,可是在作的过程当中也赶上了许多的问题javascript 小程序端不支持在本地引入,因此须要将h5发布服务器,以请求接口的形式进行访问html ...
- uni-app 和H5页面视频播放flv格式视频监控
本文章向大家介绍uniApp 实现微信小程序和app视频播放flv格式视频监控,主要包括uniApp 实现微信小程序和app视频播放flv格式视频监控使用实例.应用技巧.基本知识点总结和需要注意事项, ...
最新文章
- 表格中td限宽溢出以省略号代替
- Hyperledger Fabric 核心模块(7)Fabric-ca-client
- Android 优化电池使用时间——确定和检测网络状态
- maven 常用的插件
- redis 哨兵_Redis哨兵机制的原理介绍
- HackerOne 发布2021年《黑客驱动安全报告:行业洞察》
- python编程入门教程第6讲_Python开发的入门教程(六)-函数
- C#连接SQL Server数据库
- B树和TreeSet与TreeMap
- linux冒险岛服务端,冒险岛V118单机版一键端,开放全职业 带GM工具和命令
- 如何在Nintendo交换机上设置家长控制
- 微博上面好看的跳舞美女蛮多的,【Python爬虫】采集微博视频数据(附代完整代码)
- 百度网盘外链采集分析 爬取百度网盘用户分享 自建百度网盘文件链接搜索引擎
- SpringBoot项目网页加载出现Whitelabel Error Page
- 谈谈小程序的赚钱方式
- win7开启共享(热点)设置
- MyBatis 开发有bug找不到?多看看执行流程
- QChart空心折线图,双坐标轴显示不同参数
- ISCA2022部分论文阅读整理
- 使用钉钉的同时又想使用CRM功能,该怎么办?
热门文章
- Cisco 2960交换机密码恢复
- html地图导航代码例子,js 实现百度地图导航例子
- 当你一个人走过你们曾经走过的大街小巷,你会有何感受?
- 快速解决win7系统Aero主题无法使用
- 计算机编程考试题库和答案,计算机程序设计员试题及答案
- chm sharp安卓版_CHM Sharp(CHM阅读器)
- Linux系统平均负载的含义
- 微型计算机软硬件论文,关于微型计算机软硬件论文3000字_微型计算机软硬件毕业论文范文模板...
- 实例讲解kubernetes网络通信
- Spark基本工作流程和作业调度