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激励视频,用户获取奖励相关推荐

  1. 微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音

    微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音 1.目前的需求是什么 2.都踩了那些坑 1.小程序 2.h5语音提示 3.语音合成声音录制不进去,ios有时候是麦克风,有时 ...

  2. java与js交互视频_Android与H5交互—Java调用Js、Js调Java、H5页面调用Android播放视频...

    content="ANZO,GAME,LOL,DNF,DOTA,撸啊撸,地下城与勇士,掌游宝,攻略,宝典,模拟器,加点,战报,英雄,最新,最全,最强,视频"> content ...

  3. H5页面调用微信支付

    1.H5页面使用微信支付,首先需要注册微信公众号,在设置与开发>公众号设置>功能设置中配置业务域名.JS接口安全域名.网页授权域名.支付功能页面需在此域名链接下的页面. 2.加入域名后,就 ...

  4. 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?

    关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码. 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什 ...

  5. 微信端H5页面调用分享接口

    最近公司做了一个给学生投票的H5页面,主要是在微信端使用,需要添加微信分享功能: 本文章主要是记录调用微信分享接口需要注意的事项: 1.前端用的angular1框架,首先需要在index页面引入微信接 ...

  6. 微信小程序webview(H5页面)调用微信小程序支付

    1.业务描述:微信小程序商城入口进入的页面是商城H5页面,在H5页面进行微信支付如何实现: 2.微信小程序(webview访问H5页面)必须使用微信小程序支付: 如何实现以及实现方式以及支付后页面返回 ...

  7. 微信h5页面调用第三方位置导航

    微信h5页面拉起第三方导航应用 需要准备的: 通过微信认证的公众号 有备案过的域名 背景:微信公众号点击菜单栏跳到h5页面,需要用到导航功能 需求:当用户点击导航按钮时,跳转到第三方app进行导航 参 ...

  8. webview调用ios或者安卓的方法(内嵌h5页面调用app原生方法)

    1.配合使用调用app原生的方法(h5页面不需要回调和数据) 实例1 //通知客户端,token失效 callTokenLostToApp(){let boswer=vm.config.getBrow ...

  9. 小程序接入h5页面_原生小程序接入H5页面,请求后台接口,获取数据

    项目开发中赶上三端接入h5的需求,因此本身动手作h5页面,可是在作的过程当中也赶上了许多的问题javascript 小程序端不支持在本地引入,因此须要将h5发布服务器,以请求接口的形式进行访问html ...

  10. uni-app 和H5页面视频播放flv格式视频监控

    本文章向大家介绍uniApp 实现微信小程序和app视频播放flv格式视频监控,主要包括uniApp 实现微信小程序和app视频播放flv格式视频监控使用实例.应用技巧.基本知识点总结和需要注意事项, ...

最新文章

  1. 表格中td限宽溢出以省略号代替
  2. Hyperledger Fabric 核心模块(7)Fabric-ca-client
  3. Android 优化电池使用时间——确定和检测网络状态
  4. maven 常用的插件
  5. redis 哨兵_Redis哨兵机制的原理介绍
  6. HackerOne 发布2021年《黑客驱动安全报告:行业洞察》
  7. python编程入门教程第6讲_Python开发的入门教程(六)-函数
  8. C#连接SQL Server数据库
  9. B树和TreeSet与TreeMap
  10. linux冒险岛服务端,冒险岛V118单机版一键端,开放全职业 带GM工具和命令
  11. 如何在Nintendo交换机上设置家长控制
  12. 微博上面好看的跳舞美女蛮多的,【Python爬虫】采集微博视频数据(附代完整代码)
  13. 百度网盘外链采集分析 爬取百度网盘用户分享 自建百度网盘文件链接搜索引擎
  14. SpringBoot项目网页加载出现Whitelabel Error Page
  15. 谈谈小程序的赚钱方式
  16. win7开启共享(热点)设置
  17. MyBatis 开发有bug找不到?多看看执行流程
  18. QChart空心折线图,双坐标轴显示不同参数
  19. ISCA2022部分论文阅读整理
  20. 使用钉钉的同时又想使用CRM功能,该怎么办?

热门文章

  1. Cisco 2960交换机密码恢复
  2. html地图导航代码例子,js 实现百度地图导航例子
  3. 当你一个人走过你们曾经走过的大街小巷,你会有何感受?
  4. 快速解决win7系统Aero主题无法使用
  5. 计算机编程考试题库和答案,计算机程序设计员试题及答案
  6. chm sharp安卓版_CHM Sharp(CHM阅读器)
  7. Linux系统平均负载的含义
  8. 微型计算机软硬件论文,关于微型计算机软硬件论文3000字_微型计算机软硬件毕业论文范文模板...
  9. 实例讲解kubernetes网络通信
  10. Spark基本工作流程和作业调度