在移动应用开发中,设备标识符(如 OAID)对于个性化广告投放和用户行为分析至关重要。OpenHarmony 操作系统提供了一套 API 来获取和重置开放匿名设备标识符(OAID)。本教程将指导你如何在 OpenHarmony 应用中实现这一功能。
步骤一:请求广告跟踪权限
在使用 OAID 之前,应用需要获取用户的授权以进行广告跟踪。这通常通过动态权限请求实现。
aboutToAppear() {
const atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context, ["ohos.permission.APP_TRACKING_CONSENT"]).then((data) => {
if (data.authResults[0] == 0) {
Logger.info(TAG, 'request permission success');
} else {
Logger.info(TAG, `user rejected`);
}
}).catch((err: BusinessError) => {
Logger.info(TAG, `request permission failed, error message: ${(err as BusinessError).message}`);
})
}
在页面即将出现时(aboutToAppear
生命周期方法中),创建权限管理器实例并请求广告跟踪权限。根据用户响应,记录日志信息。
步骤二:获取 OAID
应用可以通过两种方式获取 OAID:Promise 方式和 Async Callback 方式。
Promise 方式:
identifier.getOAID().then((data: string) => {
this.oaid = data;
Logger.info(TAG, `getAdsIdentifierInfo by promise success`);
}).catch((err: BusinessError) => {
Logger.info(TAG, `getAdsIdentifierInfo failed, message: ${err.message}`);
})
Async Callback 方式:
identifier.getOAID((err: BusinessError, data: string) => {
if (err.code) {
Logger.info(TAG, `getAdsIdentifierInfo failed, message: ${err.message}`);
} else {
this.oaid = data;
Logger.info(TAG, `getAdsIdentifierInfo by callback success`);
}
});
完整示例代码
完整的示例代码如下:
import { BusinessError } from '@ohos.base';
import identifier from '@ohos.identifier.oaid';
import common from '@ohos.app.ability.common';
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import Want from '@ohos.app.ability.Want';
import Logger from '../log/Logger'; // 导入日志记录模块
const TAG = 'OAIDPage';
@Entry
@Component
struct Index {
private oaid: string = ''; // 定义OAID字符串变量
aboutToAppear() {
const atManager = abilityAccessCtrl.createAtManager(); // 创建权限管理实例
atManager.requestPermissionsFromUser(this.context, ["ohos.permission.APP_TRACKING_CONSENT"]) // 请求广告跟踪权限
.then((data) => {
if (data.authResults[0] == 0) { // 用户同意授权
Logger.info(TAG, 'request permission success');
this.getOAID(); // 获取OAID
} else {
Logger.info(TAG, `user rejected`);
}
})
.catch((err: BusinessError) => { // 捕获请求权限过程中的错误
Logger.info(TAG, `request permission failed, error message: ${(err as BusinessError).message}`);
});
}
getOAID() {
identifier.getOAID() // 调用getOAID方法获取OAID
.then((data: string) => {
this.oaid = data; // 将获取到的OAID赋值给成员变量
Logger.info(TAG, `getAdsIdentifierInfo by promise success`);
})
.catch((err: BusinessError) => { // 捕获获取OAID过程中的错误
Logger.info(TAG, `getAdsIdentifierInfo failed, message: ${err.message}`);
});
}
build() {
Column() { // 使用Column组件垂直排列UI元素
ActionBar({ title: $r("app.string.oaid_title") }).height('10%')
FormItemText({ // 添加表单项,显示OAID信息
label: $r("app.string.oaid_label"),
value: this.oaid,
compId: 'hiad_demo_oaid_textArea'
}).width('90%')
}
.width('100%')
.height('100%');
}
}
总结
以上就是在 OpenHarmony 应用中获取和重置 OAID 的基本步骤。应用需要先请求用户的广告跟踪权限。只有经用户同意了,应用才可以通过 Promise 或 Async Callback 的方式获取 OAID。