上一篇介绍的是 WEB应用集成广告变现,这一篇就来介绍APP集成广告变现的操作;图文手把手教程如下,推荐给有想法、动手能力强的小伙伴 (天天看别人APP上的广告,也让我们来薅一点广告的羊毛?)

AdMob配置广告位
AdMob 是 Google 提供的一款广告联盟服务,可以帮助开发者在应用内植入广告,获得高收益和数据分析
1. 添加应用

2. 添加广告单元

当前支持的广告单元有下面这些,基本上覆盖了我们日常见到的广告类型
•需要注意的是:谷歌的开屏广告玩法和国内的开屏广告展示及交互方式都不太一样

我封装的android基座工程中(文末给出了基座的获取方式),支持下面四种类型广告
•开屏广告:首次打开app、从后台再次进入app时展示的广告,需要用户主动关闭之后才能进入app•激励广告:观看视频(通常30s左右)之后得到奖励的广告,比如游戏道具的看广告兑换•插页广告:在合适的时机弹出全屏的页面广告,比如一个游戏你玩了几关,进入下一关弹出了一个插页广告•插页激励广告:同激励广告,但是广告时长更短(通常10s以内),对用户的体验会好很多
接下来依次创建广告,创建广告时,需要配置的信息差不多,下面以开屏广告进行说明
•广告类型:视频的广告报价更高,收益更好;但是填充率低(简单理解就是视频太大了,加载慢,网络不好的时候拉不到广告)•频次上限:如果你不希望广告太频繁影响用户体验,可以开启这里,设置一下同一个用户每五分钟展示一次•有效千次展示费用底价:即运营常说的CPM,对于个人而言,一个不那么靠谱的经验如下:•如果你的应用用户数非常大,靠展示量变现,可以选择接收所有价格,尽量的拉高填充率•如果你的用户质量很高,单用户的广告观看点击CPC较高,那么就更适合较高的底价•如果不确定,那就保守点选择适中的方案
说明:通常企业级应用集成的是多家广告平台,即常说的广告联盟,从各广告平台中取保价最高的进行展示;同时也会采用瀑布流分层的方式设计广告填充网络,且一定会在最底层设计无底价的广告位,主打的就是蚊子再小也是肉(但是不得不说这种方式对用户体验非常差,以免费小说app为例,翻几页来一个广告,非常影响用户体验)


AndroidMainfest.xml 文件的 APPLICATION_ID 值
而下面的广告单元ID,则主要对应 android 基座中 AdsEnum中的广告单元
•根据你创建的广告类型,将不同的广告单元填充在下面的 "" 内•如上面是开屏广告,则需要将ca-app-pub-55920005****/***4386 拷贝到 SPLASH 右边的 "" 内, 如下图

接下接下来依次创建插页、插页视频、激励广告

3. 应用绑定及审核
垃圾消除小游戏之前已经绑定过了,因此这里我们换一个来演示全流程
如上面这个app上架之后,可以直接在谷歌后台获取到对应的访问地址如下


通常上面的保存提交之后,就会出现下面这个页面,两种情况进行区分
你没有维护过 app-ads.txt•维护了 app-ads.txt•如果已经维护了,那就不用管,因为刚上架的app,很多信息估计没有全量同步,过一段时间就好了



Android基座
对于android基座中,广告相关的改动非常少,你只需要调整下面几个位置即可
1. 广告应用id设置
simpleDemo/src/main/AndroidManifest.xml 文件中修改上面提到 APPLICATION_ID
2. 广告单元设置
在文件uni-admobs\src\main\java\com\git\hui\uni\admobs\adsAdsEnum中维护广告单元
3. 广告开关
除了上面的广告单元配置之外,还有一个地方需要注意,在 AdsUtil.java 文件中
•如果 TEST_ENV = true 表示现在展示的是测试广告,适用于本地测试时使用•如果需要发布应用市场,需要将 TEST_ENV 设置为 false

应用中使用广告
接下来我们需要在ai生成的应用中找到合适的地方,调用广告
1. 获取广告访问文件
下面的文件中封装了常见的三种广告展示方式(开屏广告不用管哈,这个是在android基座中完成展示的)
•看视频广告兑换免广告时长:autoCloseAds方法,默认免24小时,根据实际情况修改 24 * 60 * 60 * 1000 这段代码•优先展示视频激励,如果视频激励没有,则展示插页激励,如果插页激励也没有,则展示插页,如果插页还没有,则无法兑换免广告时长•看视频兑换激励: showRewards方法•优先展示视频激励,如果视频激励没有,则展示插页激励,如果插页激励也没有,则展示插页,如果插页还没有,则无法兑换激励•自动展示广告: showAds方法•优先展示插页激励,如果插页激励没有,则展示插页,如果插页没有则不展示
const isAndroid = uni.getSystemInfoSync().platform === 'android';const ADS_DISABLED_KEY = 'ads_disabled_until';class AppUtils { static androidPlantform() { return isAndroid; } static showAds() { if (!isAndroid || this.isAdsDisabled()) { return; } try { const adsManager= plus.android.importClass('com.git.hui.uniapp.ads.GlobalAdsManager'); adsManager.autoShowAds(); } catch (e) { console.error('调用Android Toast失败:', e); } } /** * 视频激励广告 */ static showRewards(callback, failedCallback) { if (!isAndroid) { // 回调 callback(true); return; } var testModule = uni.requireNativePlugin("AdsModule"); testModule.showAds('reward', (res) => { console.log('app返回的结果是:', res) const suc = res && res.code === 'success'; if (callback) { testModule.printLog(JSON.stringify(res) + "|" + suc); callback(suc); } else { if (failedCallback) { failedCallback() } } }) } /** * 看视频免兑换免广告时长 * * @param {*} callback * @returns */ static autoCloseAds(callback) { if (!isAndroid) { return; } var testModule = uni.requireNativePlugin("AdsModule"); testModule.showAds('reward', (res) => { console.log('app返回的结果是:', res) const suc = res && res.code === 'success'; // 这里默认免广告时长为24小时 const disabledUntil = Date.now() + 24 * 60 * 60 * 1000; if (suc) { // 设置24小时后的时间戳 uni.setStorageSync(ADS_DISABLED_KEY, disabledUntil); } if (callback) { testModule.printLog(JSON.stringify(res) + "|" + suc + "无广告时间:" + disabledUntil); callback(suc); } }) } static isAdsDisabled() { try { const disabledUntil = uni.getStorageSync(ADS_DISABLED_KEY); if (!disabledUntil) return false; return Date.now() < disabledUntil; } catch (e) { return false; } } static getAdFreeTime() { try { const disabledUntil = uni.getStorageSync(ADS_DISABLED_KEY); if (!disabledUntil) return 0; const remainingTime = disabledUntil - Date.now(); return remainingTime > 0 ? Math.floor(remainingTime / 1000) : 0; } catch (e) { return 0; } }}export default AppUtils;

2. 展示广告
接下来就是在我们使用ai生成的垃圾消除小游戏中,找到合适的地方来展示广告


3. 激励广告兑换道具
激励广告兑换也是一种常见的广告变现方式,通过观看广告来获取对应的道具,如我们给游戏新增两个功能
•撤销:回退上次卡槽中的卡片到游戏区域•重新排列:将卡槽和游戏区域的卡片重排一下
上面的游戏界面截图底部采用的是中文按钮的方式,我们使用图标进行替换一下;然后在右上角标记看广告兑换的徽标(admob的政策性要求,对于触发广告的按钮需要显示标注ads/广告字样)

调整之后的样式如下:

接下来就是需要在对应的按钮点击之后,集成广告功能
基本使用姿势:
// 将原来的逻辑,包裹在 AppUtils.showRewards()的第一个参数内AppUtils.showRewards(() => { // 这里是看完广告的回调,即之前的正常逻辑}, () => { // 这里是未看完广告的回调})

4. 看视频,兑换免广告时长
这只是上面激励广告的使用变种,有想法的小伙伴可以按照自己的意愿进行各种广告功能设计
通常的方式是在主页的设置里中,添加一个免广告时长兑换的功能,点击之后观看视频广告,看完之后在倒计时之前,再通过 AppUtils.showAds 就不会再展示广告了(即主要是免除上面的第二步的插页广告展示)
同样的直接交给Trae帮我们补全相关逻辑:

具体的广告兑换逻辑就在下面

使用之后的效果如下

5. app安装体验
接下来我们将集成广告之后的应用打包安装到手机上实际体验一下
•谷歌应用市场下载地址:
https://play.google.com/store/apps/details?id=com.git.hui.sheepgame.google•apk下载地址:(点击查看原文即可)
https://apkpure.com/cn/%E7%BE%8A%E4%BA%86%E4%B8%AA%E7%BE%8A-%E5%9E%83%E5%9C%BE%E6%B6%88%E9%99%A4%E7%89%88/com.git.hui.sheepgame.google
小结
这里主要给大家介绍如何将admob广告集成到uniapp的项目中从而实现变现,基本流程比较清晰:
•admob后台创建应用 -> 创建广告位•修改android基座中的应用ID + 广告位信息•下载封装的AppUtils.js文件都自己的应用中•在合适的地方使用广告
文中提到的基座 & 工具类,关注公众号,回复 “基座” 或者 “Android”关键词获取哦
本文对应的垃圾消除小游戏对应的源码已完全托管,欢迎自取
•https://github.com/liuyueyi/ai-games-sheepremove•https://gitee.com/liuyueyi/ai-games-sheepremove
本文链接:https://www.kinber.cn/post/5123.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
