1# 广告标识服务 2 3## 获取OAID信息 4 5 6### 场景介绍 7 8开放匿名设备标识符(Open Anonymous Device Identifier, OAID,以下简称OAID):是一种非永久性设备标识符,基于开放匿名设备标识符,可在保护用户个人数据隐私安全的前提下,向用户提供个性化广告,同时三方监测平台也可以向广告主提供转化归因分析。 9 10媒体App、广告平台、三方监测平台等开发者,可获取设备上的OAID,您可基于OAID进行个性化广告推荐或广告转化归因分析。 11 12 13### 接口说明 14 15| 接口名 | 描述 | 16| -------- | -------- | 17| [getOAID()](../../reference/apis/js-apis-oaid.md#identifiergetoaid):Promise<string> | 获取OAID,通过Promise异步返回结果。 | 18| [getOAID(callback: AsyncCallback<string>)](../../reference/apis/js-apis-oaid.md#identifiergetoaid-1): void | 获取OAID,通过Callback回调返回值。 | 19 20 21### 开发步骤 22 231. 在模块的module.json5文件中,申请广告跟踪权限[ohos.permission.APP_TRACKING_CONSENT](../../security/permission-list.md#ohospermissionapp_tracking_consent)。示例代码如下所示: 24 ``` 25 { 26 "module": { 27 "requestPermissions": [ 28 { 29 "name": "ohos.permission.APP_TRACKING_CONSENT" 30 } 31 ] 32 } 33 } 34 ``` 35 36 在应用启动时触发动态授权弹框,向用户请求授权。其中context的获取方式参见[各类Context的获取方式](../../application-models/application-context-stage.md)。示例代码如下所示: 37 ``` 38 import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; 39 import { BusinessError } from '@ohos.base'; 40 import hilog from '@ohos.hilog'; 41 import common from '@ohos.app.ability.common'; 42 43 function requestOAIDTrackingConsentPermissions(context: common.Context): void { 44 // 进入页面时触发动态授权弹框,向用户请求授权广告跟踪权限 45 const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); 46 try { 47 atManager.requestPermissionsFromUser(context, ["ohos.permission.APP_TRACKING_CONSENT"]).then((data) => { 48 if (data.authResults[0] == 0) { 49 hilog.info(0x0000, 'testTag', '%{public}s', 'request permission success'); 50 } else { 51 hilog.info(0x0000, 'testTag', '%{public}s', 'user rejected'); 52 } 53 }).catch((err: BusinessError) => { 54 hilog.error(0x0000, 'testTag', '%{public}s', `request permission failed, error: ${err.code} ${err.message}`); 55 }) 56 } catch(err) { 57 hilog.error(0x0000, 'testTag', '%{public}s', `catch err->${err.code}, ${err.message}`); 58 } 59 } 60 ``` 61 622. 调用getOAID方法获取OAID信息。示例代码如下所示: 63 ``` 64 import identifier from '@ohos.identifier.oaid'; 65 import hilog from '@ohos.hilog'; 66 import { BusinessError } from '@ohos.base'; 67 68 try { 69 identifier.getOAID((err: BusinessError, data: string) => { 70 if (err.code) { 71 hilog.error(0x0000, 'testTag', '%{public}s', `get oaid failed, error: ${err.code} ${err.message}`); 72 } else { 73 const oaid: string = data; 74 hilog.info(0x0000, 'testTag', '%{public}s', `get oaid by callback success, oaid: ${oaid}`); 75 } 76 }); 77 } catch (err) { 78 hilog.error(0x0000, 'testTag', '%{public}s', `get oaid catch error: ${err.code} ${err.message}`); 79 } 80 ``` 81