【HarmonyOS】鸿蒙应用OAID广告标识ID设置装备唯一标识

打印 上一主题 下一主题

主题 821|帖子 821|积分 2463

【HarmonyOS】广告标识ID设置装备唯一标识

媒介

1.广告标识ID-OAID是什么?:
开放匿名装备标识符(Open Anonymous Device Identifier, OAID,以下简称OAID):是一种非永世性装备标识符,基于开放匿名装备标识符,可在保护用户个人数据隐私安全的前提下,向用户提供个性化广告
2.OAID并非长期的唯一标识,不能当做DevicID使用:

固然OAID是装备级标识符,同一台装备上不同的App获取到的OAID值一样。
但是当用户规复手机出厂设置。用户操纵重置OAID。都会导致OAID厘革。并且最重要的是默认手机装备是没有开启【跨应用关联访问权限】,通过体系API获取到的是全0的值,没有效。只有当用户自动开启了,你去申请才气拿到值。
3.开启权限弹框的前置步骤
**【跨应用关联访问权限】**这个名字挺抽象的,你可以明白为安卓和苹果手机常说的跟踪访问大概广告ID权限。并且在鸿蒙中,同一台装备上当有应用去申请“跨应用关联访问权限”开关时,会初次生成OAID。
只有当用户开启时,调用API才会有自动提示用户授权的弹框,如下图:

代码实现:

代码运行日志:

调用函数:
  1. import { identifier } from '@kit.AdsKit';
  2. import { abilityAccessCtrl, common } from '@kit.AbilityKit';
  3. import { hilog } from '@kit.PerformanceAnalysisKit';
  4. import { BusinessError } from '@kit.BasicServicesKit';
  5. @Entry
  6. @Component
  7. struct Index {
  8.   onClickGetOAID = ()=>{
  9.     this.requestOAIDTrackingConsentPermissions(getContext());
  10.   }
  11.   private requestOAIDTrackingConsentPermissions(context: common.Context): void {
  12.   // 进入页面时,向用户请求授权广告跨应用关联访问权限
  13.   const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  14.   try {
  15.     atManager.requestPermissionsFromUser(context, ["ohos.permission.APP_TRACKING_CONSENT"]).then((data) => {
  16.       if (data.authResults[0] === 0) {
  17.         hilog.info(0x0000, 'testTag', '%{public}s', 'succeeded in requesting permission');
  18.         identifier.getOAID((err: BusinessError, data: string) => {
  19.           if (err.code) {
  20.             hilog.error(0x0000, 'testTag', '%{public}s', `get oaid failed, error: ${err.code} ${err.message}`);
  21.           } else {
  22.             const oaid: string = data;
  23.             hilog.info(0x0000, 'testTag', '%{public}s', `succeeded in getting oaid by callback , oaid: ${oaid}`);
  24.           }
  25.         });
  26.       } else {
  27.         hilog.error(0x0000, 'testTag', '%{public}s', 'user rejected');
  28.       }
  29.     }).catch((err: BusinessError) => {
  30.       hilog.error(0x0000, 'testTag', '%{public}s', `request permission failed, error: ${err.code} ${err.message}`);
  31.     })
  32.   } catch (err) {
  33.     hilog.error(0x0000, 'testTag', '%{public}s', `catch err->${err.code}, ${err.message}`);
  34.   }
  35. }
  36.   build() {
  37.     RelativeContainer() {
  38.       Text("点击请求用户OAID")
  39.         .id('IndexHelloWorld')
  40.         .fontSize(50)
  41.         .fontWeight(FontWeight.Bold)
  42.         .alignRules({
  43.           center: { anchor: '__container__', align: VerticalAlign.Center },
  44.           middle: { anchor: '__container__', align: HorizontalAlign.Center }
  45.         })
  46.         .onClick(this.onClickGetOAID)
  47.     }
  48.     .height('100%')
  49.     .width('100%')
  50.   }
  51. }
复制代码
申请权限配置文件:
ohos.permission.APP_TRACKING_CONSENT
  1. {
  2.   "module": {
  3.     "name": "entry",
  4.     "type": "entry",
  5.     "description": "$string:module_desc",
  6.     "mainElement": "EntryAbility",
  7.     "deviceTypes": [
  8.       "phone",
  9.       "tablet",
  10.       "2in1"
  11.     ],
  12.     "deliveryWithInstall": true,
  13.     "installationFree": false,
  14.     "pages": "$profile:main_pages",
  15.     "abilities": [
  16.       {
  17.         "name": "EntryAbility",
  18.         "srcEntry": "./ets/entryability/EntryAbility.ets",
  19.         "description": "$string:EntryAbility_desc",
  20.         "icon": "$media:layered_image",
  21.         "label": "$string:EntryAbility_label",
  22.         "startWindowIcon": "$media:startIcon",
  23.         "startWindowBackground": "$color:start_window_background",
  24.         "exported": true,
  25.         "skills": [
  26.           {
  27.             "entities": [
  28.               "entity.system.home"
  29.             ],
  30.             "actions": [
  31.               "action.system.home"
  32.             ]
  33.           }
  34.         ]
  35.       }
  36.     ],
  37.     "extensionAbilities": [
  38.       {
  39.         "name": "EntryBackupAbility",
  40.         "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets",
  41.         "type": "backup",
  42.         "exported": false,
  43.         "metadata": [
  44.           {
  45.             "name": "ohos.extension.backup",
  46.             "resource": "$profile:backup_config"
  47.           }
  48.         ],
  49.       }
  50.     ],
  51.     "requestPermissions": [
  52.       {
  53.         "name": "ohos.permission.APP_TRACKING_CONSENT",
  54.         "reason": "$string:reason",
  55.         "usedScene": {
  56.           "abilities": [
  57.             "EntryAbility"
  58.           ],
  59.           "when": "inuse"
  60.         }
  61.       }
  62.     ]
  63.   }
  64. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表