1. 概述
广告标识符(OAID)是HarmonyOS提供的一种非永久性设备标识符,用于在保护用户个人数据隐私安全的前提下,向用户提供个性化广告。本教程将指导您如何在HarmonyOS应用中集成和使用OAID。
2. OAID的作用
OAID具有以下作用:
- 提供非永久性设备标识符,用于广告跟踪和个性化广告推送
- 保护用户隐私,用户可以重置OAID或限制广告跟踪
- 帮助开发者提升广告转化效果和精准度
- 用于广告效果的跟踪和分析
3. 前提条件
- 已安装DevEco Studio
- 已创建HarmonyOS项目
- 已在鲸鸿动能媒体服务平台注册
4. 添加依赖
在项目的oh-package.json5
文件中添加AdsKit依赖:
"dependencies": {
"@kit.AdsKit": "*",
"@kit.AbilityKit": "*"
}
5. 导入必要的模块
import { identifier } from '@kit.AdsKit';
import { common, abilityAccessCtrl } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
6. 添加权限声明
在应用的module.json5
文件中添加广告跟踪权限:
"requestPermissions": [
{
"name": "ohos.permission.APP_TRACKING_CONSENT",
"reason": "用于获取广告标识符,提供个性化广告服务",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
}
]
7. 请求广告跟踪权限
在使用OAID前,需要请求用户授权广告跟踪权限:
private requestOAIDTrackingConsentPermissions(context: common.Context): void {
const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
try {
atManager.requestPermissionsFromUser(context, ['ohos.permission.APP_TRACKING_CONSENT']).then((data) => {
if (data.authResults[0] == 0) {
hilog.info(0x0000, 'OAIDDemo', '%{public}s', '成功请求权限');
// 权限获取成功后,获取OAID
this.getOAID();
} else {
hilog.info(0x0000, 'OAIDDemo', '%{public}s', '用户拒绝授权');
// 用户拒绝授权,应当尊重用户选择,不再请求OAID
// 可以展示非个性化广告
}
}).catch((err: BusinessError) => {
hilog.error(0x0000, 'OAIDDemo', '%{public}s', `请求权限失败, error: ${err.code} ${err.message}`);
})
} catch (err) {
hilog.error(0x0000, 'OAIDDemo', '%{public}s', `捕获错误, code:${err.code}, message: ${err.message}`);
}
}
8. 获取OAID
获取权限后,可以调用getOAID()
方法获取广告标识符:
private getOAID(): void {
identifier.getOAID().then((oaid: string) => {
// 获取OAID成功
hilog.info(0x0000, 'OAIDDemo', '%{public}s', `成功获取广告标识符信息: ${oaid}`);
// 将OAID添加到广告请求参数中
this.adRequestParams.oaid = oaid;
// 加载广告
this.loadAd();
}).catch((error: BusinessError) => {
hilog.error(0x0000, 'OAIDDemo', '%{public}s', `获取广告标识符信息失败, message: ${error.message}`);
})
}
9. 检查广告跟踪限制状态
您可以检查用户是否启用了"限制广告跟踪":
private checkLimitAdTracking(): void {
identifier.isLimitAdTrackingEnabled().then((enabled: boolean) => {
if (enabled) {
hilog.info(0x0000, 'OAIDDemo', '%{public}s', '用户已启用限制广告跟踪');
// 用户已启用限制广告跟踪,应当展示非个性化广告
this.adOptions.nonPersonalizedAd = 1;
} else {
hilog.info(0x0000, 'OAIDDemo', '%{public}s', '用户未启用限制广告跟踪');
// 用户未启用限制广告跟踪,可以展示个性化广告
this.adOptions.nonPersonalizedAd = 0;
}
}).catch((error: BusinessError) => {
hilog.error(0x0000, 'OAIDDemo', '%{public}s', `检查限制广告跟踪状态失败, message: ${error.message}`);
})
}
10. 在广告请求中使用OAID
获取OAID后,可以将其添加到广告请求参数中:
// 广告请求参数
private adRequestParams: advertising.AdRequestParams = {
adId: 'YOUR_AD_ID_HERE',
adType: AdType.BANNER_AD,
adCount: 1,
adWidth: 360,
adHeight: 57,
// OAID将在获取后添加到这里
// oaid: 'OAID_VALUE'
};
11. 在生命周期方法中初始化OAID
aboutToAppear() {
try {
// 请求用户授权
this.requestOAIDTrackingConsentPermissions(this.context);
} catch (err) {
hilog.error(0x0000, 'OAIDDemo', '%{public}s', `catch err, code: ${err.code}, message: ${err.message}`);
}
hilog.info(0x0000, 'OAIDDemo', '%{public}s', 'aboutToAppear');
}
12. OAID的隐私保护
用户可以通过以下方式保护隐私:
- 在系统"设置 > 隐私 > 广告与隐私"或"设置 > 安全与隐私 > 更多安全设置 > 匿名设备标识"界面中重置"广告标识符"
- 启用"限制广告跟踪"选项
当用户重置OAID后,系统会生成一个新的OAID,应用只能获取到这个新的OAID。
当用户启用"限制广告跟踪"选项后,应用和广告商不能使用OAID来向用户推送个性化广告,但仍可以推送非个性化的广告。
13. 最佳实践
- 在应用首次启动时请求广告跟踪权限
- 尊重用户的隐私选择,如果用户拒绝授权或启用了限制广告跟踪,应当展示非个性化广告
- 不要将OAID与用户的个人身份信息关联
- 不要将OAID用于广告以外的目的
- 在隐私政策中明确说明OAID的使用目的和方式
14. 注意事项
无法获取OAID
可能原因:
- 未正确请求广告跟踪权限
- 用户拒绝了授权请求
- 设备不支持OAID
获取到的OAID与之前不同
可能原因:
- 用户重置了广告标识符
- 设备系统更新后重置了OAID
用户启用了"限制广告跟踪"选项
解决方案:
- 尊重用户选择,展示非个性化广告
- 在广告请求参数中设置
nonPersonalizedAd = 1
15. 总结
OAID是一种平衡用户隐私和广告效果的解决方案,正确使用OAID可以帮助您提供更精准的广告服务,同时尊重用户的隐私选择。