当前位置: 首页 > article >正文

鸿蒙Ads Kit(广告服务):激励广告开发(二)

激励广告是一种全屏幕的视频广告用户可以选择点击观看以换取相应奖励如游戏复活、获取道具、积分等。一、场景介绍激励广告是一种全屏幕的视频广告用户可以选择点击观看以换取相应奖励。场景游戏通关、复活获取道具、积分继续机会人物技能升级二、版本支持设备类型支持情况Phone支持Tablet支持PC/2in1支持需智慧营销服务或广告服务版本≥8.4.80.300PC/2in1设备版本查看路径设置 → 应用和元服务 → 更多应用三、核心接口接口描述loadAd(adParam, adOptions, listener)请求单广告位广告通过AdRequestParams、AdOptions进行广告请求参数设置通过AdLoadListener监听广告请求回调showAd(ad, options, context)展示广告通过AdDisplayOptions进行广告展示参数设置。说明为了保证广告能正确展示该接口必须和请求广告接口配套使用四、开发步骤4.1 导入相关模块import { abilityAccessCtrl, common, PermissionRequestResult } from kit.AbilityKit; import { advertising, identifier } from kit.AdsKit; import { hilog } from kit.PerformanceAnalysisKit; import { BusinessError, commonEventManager } from kit.BasicServicesKit;4.2 获取OAID若需提升广告推送精准度可以在请求参数AdRequestParams中添加oaid属性。注意使用以下示例中提供的测试广告位时必须先获取OAID信息。async function requestOAID(context: Context): Promisestring | undefined { // 向用户请求授权广告跨应用关联访问权限 let isPermissionGranted: boolean false; try { const atManager: abilityAccessCtrl.AtManager abilityAccessCtrl.createAtManager(); const result: PermissionRequestResult await atManager.requestPermissionsFromUser(context, [ohos.permission.APP_TRACKING_CONSENT]); isPermissionGranted result.authResults[0] abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED; } catch (err) { hilog.error(0x0000, testTag, Failed to request permission. Code is ${err.code}, message is ${err.message}); } if (isPermissionGranted) { hilog.info(0x0000, testTag, Succeeded in requesting permission); try { const oaid await identifier.getOAID(); hilog.info(0x0000, testTag, Succeeded in getting OAID); return oaid; } catch (err) { hilog.error(0x0000, testTag, Failed to get OAID. Code is ${err.code}, message is ${err.message}); } } else { hilog.error(0x0000, testTag, Failed to request permission. User rejected); } return undefined; }4.3 请求广告请求广告关键参数参数名类型必填说明adTypenumber是激励广告类型为7adIdstring是广告位ID测试用j14rx3xtac正式需申请oaidstring否开放匿名设备标识符不填无法获取个性化广告private async loadAd(): Promisevoid { // 广告请求回调监听 const adLoadListener: advertising.AdLoadListener { onAdLoadFailure: (errorCode: number, errorMsg: string) { hilog.error(0x0000, testTag, Failed to load ad. Code is ${errorCode}, message is ${errorMsg}); }, onAdLoadSuccess: (ads: Arrayadvertising.Advertisement) { hilog.info(0x0000, testTag, Succeeded in loading ad); // 展示广告 this.showAd(ads); } }; // 广告请求参数 const adRequestParams: advertising.AdRequestParams { adId: j14rx3xtac, // 测试广告位ID adType: 7, // 激励广告类型 oaid: await requestOAID(this.context) }; // 广告配置参数 const adOptions: advertising.AdOptions {}; // 创建AdLoader广告对象 const adLoader: advertising.AdLoader new advertising.AdLoader(this.context); try { adLoader.loadAd(adRequestParams, adOptions, adLoadListener); } catch (e) { hilog.error(0x0000, testTag, Failed to load ad. Code is ${e.code}, message is ${e.message}); } }4.4 事件订阅需要在应用中订阅com.huawei.hms.pps.action.PPS_REWARD_STATUS_CHANGED事件来监听激励广告页面变化并接收奖励信息。页面变化状态状态说明onAdOpen打开广告onAdClick点击广告onAdClose关闭广告onAdReward广告获得奖励onVideoPlayBegin广告视频开始播放onVideoPlayEnd广告视频播放结束奖励信息获取rewardType奖励物品的名称rewardAmount奖励物品的数量const KEY_REWARD_DATA reward_ad_data; const KEY_REWARD_STATUS reward_ad_status; export class RewardAdStatusHandler { private subscriber: commonEventManager.CommonEventSubscriber | null null; public registerPPSReceiver(): void { if (this.subscriber) { this.unRegisterPPSReceiver(); } const subscribeInfo: commonEventManager.CommonEventSubscribeInfo { events: [com.huawei.hms.pps.action.PPS_REWARD_STATUS_CHANGED], publisherBundleName: com.huawei.hms.adsservice // 防止接收伪造事件 }; commonEventManager.createSubscriber(subscribeInfo, (err, commonEventSubscriber) { if (err) { hilog.error(0x0000, testTag, Failed to create subscriber. Code is ${err.code}); return; } this.subscriber commonEventSubscriber; commonEventManager.subscribe(this.subscriber, (err, commonEventSubscriber) { if (err) { hilog.error(0x0000, testTag, Failed to subscribe. Code is ${err.code}); } else { const status commonEventSubscriber?.parameters?.[KEY_REWARD_STATUS]; switch (status) { case onAdOpen: hilog.info(0x0000, testTag, Status is onAdOpen); break; case onAdClick: hilog.info(0x0000, testTag, Status is onAdClick); break; case onAdClose: hilog.info(0x0000, testTag, Status is onAdClose); this.unRegisterPPSReceiver(); break; case onAdReward: const rewardData commonEventSubscriber?.parameters?.[KEY_REWARD_DATA]; const rewardType rewardData?.rewardType; const rewardAmount rewardData?.rewardAmount; hilog.info(0x0000, testTag, Status is onAdReward. Type is ${rewardType}, Amount is ${rewardAmount}); break; case onVideoPlayBegin: hilog.info(0x0000, testTag, Status is onVideoPlayBegin); break; case onVideoPlayEnd: hilog.info(0x0000, testTag, Status is onVideoPlayEnd); break; default: break; } } }); }); } public unRegisterPPSReceiver(): void { commonEventManager.unsubscribe(this.subscriber, (err) { if (!err) { this.subscriber null; } }); } }4.5 展示广告private showAd(ads: Arrayadvertising.Advertisement): void { try { // 注册激励广告状态监听器每次展示广告前注册 new RewardAdStatusHandler().registerPPSReceiver(); const adDisplayOptions: advertising.AdDisplayOptions { mute: true, // 是否静音 customData: CUSTOM_DATA, // 自定义数据可选 userId: 1234567 // 用户ID可选 }; advertising.showAd(ads[0], adDisplayOptions, this.context); } catch (e) { hilog.error(0x0000, testTag, Failed to show ad. Code is ${e.code}, message is ${e.message}); } }五、测试广告位广告位类型测试广告位ID展示形式比例推广类型激励j14rx3xtac图片16:9应用下载激励j2mh81xmqs视频9:16网页推广注意测试广告位仅可用于调测激励广告功能不可用于广告变现。应用正式发布前需替换为正式的激励广告位ID。六、整体流程获取OAID提升广告精准度 ↓ 请求广告loadAd ↓ 广告加载成功 ↓ 注册事件监听registerPPSReceiver ↓ 展示广告showAd ↓ 用户观看广告 ↓ 事件回调onAdReward/onAdClose等 ↓ 发放奖励要点说明广告类型adType 7激励广告测试广告位j14rx3xtac图片、j2mh81xmqs视频权限要求需申请ohos.permission.APP_TRACKING_CONSENT权限获取OAID事件订阅订阅com.huawei.hms.pps.action.PPS_REWARD_STATUS_CHANGED展示前注册每次展示广告前需注册事件监听器

相关文章:

鸿蒙Ads Kit(广告服务):激励广告开发(二)

激励广告是一种全屏幕的视频广告,用户可以选择点击观看,以换取相应奖励(如游戏复活、获取道具、积分等)。一、场景介绍激励广告是一种全屏幕的视频广告,用户可以选择点击观看,以换取相应奖励。场景&#xf…...

从四轴飞行器炸机到平稳悬停:我的Mahony算法调参踩坑实录与避坑指南

从四轴飞行器炸机到平稳悬停:我的Mahony算法调参踩坑实录与避坑指南 第一次试飞时,我的四轴飞行器像喝醉酒的蜜蜂一样在空中画着"8"字,随后一头栽进草丛。陀螺仪数据在串口监视器里疯狂跳动,加速度计的波形像心电图般剧…...

如何快速掌握Joy-Con Toolkit:Switch手柄个性化与优化的完整指南

如何快速掌握Joy-Con Toolkit:Switch手柄个性化与优化的完整指南 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit(jc_toolkit)是一款专为任天堂Switch手柄打造…...

从RNN到Transformer:位置信息处理的‘进化史’与实战选择指南

从RNN到Transformer:位置信息处理的‘进化史’与实战选择指南 在自然语言处理领域,序列建模的核心挑战之一是如何有效捕捉和利用位置信息。传统RNN架构通过其循环特性天然地处理序列顺序,而Transformer则彻底改变了这一范式,通过自…...

2026 RPA 行业趋势:不再拼界面自动化,拼企业级场景落地

很多人以前对RPA的理解,其实非常简单:“流程脚本工具”。但AI Agent开始落地后,企业很快发现:RPA从过去的“自动化工具”,逐渐变成:AI Agent的执行基础。而这一轮行业重构里,领先的厂商都有一个…...

10分钟实战:用Auto-Video-Generator打造AI视频的完整解决方案

10分钟实战:用Auto-Video-Generator打造AI视频的完整解决方案 【免费下载链接】auto-video-generateor 自动视频生成器,给定主题,自动生成解说视频。用户输入主题文字,系统调用大语言模型生成故事或解说的文字,然后进一…...

告别编译焦虑:手把手教你用ENV工具搞定RT-Thread项目构建(附menuconfig配置详解)

嵌入式开发者的RT-Thread实战指南:从环境搭建到系统配置全解析 第一次接触RT-Thread时,面对陌生的命令行工具和复杂的编译流程,很多开发者都会感到无从下手。这种"编译焦虑"在嵌入式开发领域非常普遍——明明已经掌握了C语言和硬件…...

RSSHub Radar:终极浏览器扩展,重新定义你的信息订阅体验

RSSHub Radar:终极浏览器扩展,重新定义你的信息订阅体验 【免费下载链接】RSSHub-Radar 🧡 Browser extension that simplifies finding and subscribing RSS and RSSHub 项目地址: https://gitcode.com/gh_mirrors/rs/RSSHub-Radar R…...

港科夜闻 | 香港科大与泰晤士高等教育合办亚洲大学高峰会2026

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大与泰晤士高等教育(THE)合办“亚洲大学高峰会2026”,以“推动全球变革:亚洲的领导力”为主题,探讨亚洲高等教育在推动全球创新及应对迫切社会挑战方面的关键…...

从一道网鼎杯CTF题‘singal‘,聊聊如何用Python快速构建自定义VM调试器

从网鼎杯CTF题singal实战:Python构建VM调试器的艺术 在逆向工程领域,虚拟机(VM)保护机制一直是令人又爱又恨的存在。去年网鼎杯青龙组的这道singal题目,用456字节的opcode数组构建了一个精巧的虚拟机环境。当我第一次看…...

零代码设计专业图表:Charticulator交互式数据可视化工具完全指南

零代码设计专业图表:Charticulator交互式数据可视化工具完全指南 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 你是否曾为制作独特的数据可视化图表…...

5分钟免费安装APA第7版:终极Microsoft Word参考文献格式指南

5分钟免费安装APA第7版:终极Microsoft Word参考文献格式指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为论文参考文献格式被导师…...

Cursor Pro终极破解工具:3步实现永久免费使用的完整指南

Cursor Pro终极破解工具:3步实现永久免费使用的完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

JDK7之前hashmap链表采用头插法为什么会导致循环链表?

hashmap发生哈希碰撞之后形成的链表,在早的jdk版本会采用头插法的方法,也就是新插入的值,作为链表的头部。这种方法在单线程的情况下没有什么问题,这里扩容的时候要说一点,当扩容的时候会创建一个新哈希表,…...

FigmaCN:让中文设计师无障碍使用Figma的智能翻译插件

FigmaCN:让中文设计师无障碍使用Figma的智能翻译插件 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因Figma的英文界面而困扰?当设计团队需要快速协作时…...

别再只用Stable Diffusion做图了!手把手教你用Video LDM把图片模型变成视频生成器

从图像到视频:基于Stable Diffusion的Video LDM实战指南 如果你已经玩转过Stable Diffusion这类图像生成模型,是否曾想过如何将这种能力扩展到视频领域?传统视频生成往往需要海量计算资源,而今天我要分享的是一种"站在巨人肩…...

22.让 RAG Agent 更像真实产品:聊天页面优化、PDF 上传、知识库重建与检索片段展示

目 录 前言优化页面UI完善视图逻辑在模版中添加CSS美化添加会话列表 增加文档上传和数据库重建功能知识向量数据库重建增加知识向量数据库重建服务接口 创建上传文件视图逻辑知识向量数据库重建 加系统的可解释性显示检索到的Top-K内容 前言 前面已经将FastAPI封装的AI能力接入…...

Linux命令:telnet

telnet 命令 基本介绍 telnet 命令是一个用于远程登录的传统工具,它使用 Telnet 协议在客户端和服务器之间建立文本模式的连接。虽然它是一个较老的工具,并且安全性较低(明文传输),但在某些情况下仍然有一定的使用价值…...

年泄压平衡防水透气膜十大品牌排行推荐

防水膜选型避坑指南:ePTFE微孔技术如何兼顾IP68与透声透气做电子产品的工程师都知道,壳体的开孔防护是个“既要又要”的难题。既要防住雨水粉尘,又不能堵住气压平衡和喇叭发声。说实话,单靠硅胶圈或钢网很难两全。直到ePTFE防水透…...

基于Spring Boot的新闻推荐系统(源码+数据库+文档)

项目编号043 源码获取:合集 引言 在信息爆炸的时代,如何让用户快速获取感兴趣的新闻内容成为了各大平台的核心竞争力。今天我们将深入剖析一个基于Spring Boot开发的新闻推荐系统,了解其技术架构、核心功能以及设计亮点。 项目概述 这是…...

从‘菜鸟’到‘笔杆子’:我是如何用《Science Research Writing》的引言技巧,让论文一次过审的

从学术新手到写作高手:如何用结构化思维打造高通过率的论文引言 第一次投稿被拒时,编辑的反馈让我记忆犹新:"引言缺乏清晰的研究gap表述,文献综述部分过于零散"。那时我才意识到,学术写作不是简单的信息堆砌…...

Windows Cleaner终极指南:轻松解决C盘爆红与系统卡顿难题

Windows Cleaner终极指南:轻松解决C盘爆红与系统卡顿难题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的…...

HoRain云--Perl CGI编程

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…...

Windows 10系统优化配置指南:开源工具的技术实现与应用

Windows 10系统优化配置指南:开源工具的技术实现与应用 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the W10…...

HoRain云--Perl OOP编程

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…...

GEEKOM A5 Pro迷你主机Ubuntu 25.10性能评测

1. GEEKOM A5 Pro 2026 Edition迷你主机Ubuntu 25.10深度评测作为一名长期关注迷你主机的技术爱好者,最近我有幸体验了GEEKOM A5 Pro 2026 Edition这款搭载AMD Ryzen 5 7530U处理器的迷你主机。在前两篇评测中,我们已经对其硬件设计和Windows 11 Pro下的…...

douyin-downloader终极指南:5分钟学会抖音无水印批量下载

douyin-downloader终极指南:5分钟学会抖音无水印批量下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

算法训练营第 16天 541. 反转字符串II

刷题日期:2026 年 4 月 28日题目 541. 反转字符串II 题目链接 :https://leetcode.cn/problems/reverse-string-ii/ 官方题解:https://www.bilibili.com/video/BV1dT411j7NN 一、看到题目的第一想法 可以写一个通用的区间反转函数&#xf…...

JAX向量化超简单

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 JAX向量化:解锁高效计算的极简之道目录JAX向量化:解锁高效计算的极简之道 引言:为什么向量化…...

【微电网调度】考虑需求响应的改进的多目标灰狼算法微电网优化调度研究【含Matlab源码 15393期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...