更新记录

1.0.2(2025-10-02)

1.0.2(2024-10-02)

新增功能

  • 支持获取鸿蒙系统设备标识符(AAID、OAID、ODID)
  • 自动权限检查和申请机制
  • 同步和异步获取方式
  • 设备ID缓存机制
  • 完整的错误处理和用户提示

技术特性

  • 完整的权限管理流程
  • 与原生 HarmonyOS 应用一致的权限申请体验
  • 支持设备能力检查
  • 优化的性能和用户体验

API 接口

  • getDeviceIds() - 获取所有设备ID
  • getAAID() - 获取广告标识符
  • getOAID() - 获取开放匿名设备标识符
  • getODID() - 获取开放设备标识符
  • checkTrackingPermission() - 检查权限状态
  • requestTrackingPermission() - 申请权限
  • initDeviceIds() - 初始化设备ID缓存
  • getDeviceIdsSync() - 同步获取设备ID

平台支持

  • HarmonyOS ✅
  • Android ❌
  • iOS ❌

1.0.0(2025-10-01)

首发


平台兼容性

uni-app(4.19)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙 鸿蒙插件版本
- - - - - - - - 12 1.0.2
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.19)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

abc-device

鸿蒙系统设备标识符获取插件,支持获取 AAID、OAID、ODID。

功能特性

  • AAID 获取 - 广告标识符
  • OAID 获取 - 开放匿名设备标识符(需要权限)
  • ODID 获取 - 开放设备标识符
  • 自动权限管理 - 自动检查和申请 APP_TRACKING_CONSENT 权限
  • 同步/异步支持 - 支持同步和异步获取方式
  • 缓存机制 - 优化性能,减少重复获取

平台支持

平台 支持状态
HarmonyOS ✅ 支持
Android ❌ 不支持
iOS ❌ 不支持

安装使用

1. 权限配置

harmony-configs/entry/src/main/module.json5 中添加权限声明:

{
  "requestPermissions": [
    {
      "name": "ohos.permission.APP_TRACKING_CONSENT",
      "reason": "$string:permission_reason_tracking",
      "usedScene": {
        "abilities": ["EntryAbility"],
        "when": "inuse"
      }
    }
  ]
}

2. 基本使用

// #ifdef APP-HARMONY
import { 
  getDeviceIds, 
  getAAID, 
  getOAID, 
  getODID,
  checkTrackingPermission 
} from '@/uni_modules/abc-device'
// #endif

export default {
  async mounted() {
    // #ifdef APP-HARMONY
    try {
      // 获取所有设备ID
      const deviceIds = await getDeviceIds()
      console.log('设备信息:', deviceIds)

      // 单独获取OAID(自动处理权限)
      const oaid = await getOAID()
      console.log('OAID:', oaid)

    } catch (error) {
      console.error('获取失败:', error.message)
      if (error.message.includes('权限')) {
        // 提示用户开启权限
        uni.showModal({
          title: '权限提示',
          content: '请在系统设置中开启权限:设置 -> 隐私 -> 广告 -> 允许应用请求跟踪',
          showCancel: false
        })
      }
    }
    // #endif
  }
}

3. 权限管理

// 检查权限状态
const permissionStatus = await checkTrackingPermission()
if (!permissionStatus.granted) {
  console.log('权限未授权,需要用户手动开启')
}

// 手动申请权限
import { requestTrackingPermission } from '@/uni_modules/abc-device'
const granted = await requestTrackingPermission()

4. 同步获取(推荐在应用启动后使用)

import { initDeviceIds, getDeviceIdsSync } from '@/uni_modules/abc-device'

// 应用启动时初始化
await initDeviceIds()

// 后续可以同步获取(从缓存)
const deviceIds = getDeviceIdsSync()
console.log('同步获取:', deviceIds)

API 文档

getDeviceIds()

获取所有设备标识符

返回值: Promise<DeviceIdInfo>

interface DeviceIdInfo {
  aaid?: string;  // 广告标识符
  oaid?: string;  // 开放匿名设备标识符
  odid?: string;  // 开放设备标识符
  error?: string; // 错误信息
}

getAAID()

获取广告标识符

返回值: Promise<string>

getOAID()

获取开放匿名设备标识符(自动处理权限)

返回值: Promise<string>

注意: 需要 ohos.permission.APP_TRACKING_CONSENT 权限

getODID()

获取开放设备标识符

返回值: string

checkTrackingPermission()

检查广告跟踪权限状态

返回值: Promise<PermissionStatus>

interface PermissionStatus {
  granted: boolean;     // 是否已授权
  shouldShowRationale: boolean; // 是否需要显示权限说明
}

requestTrackingPermission()

请求广告跟踪权限

返回值: Promise<boolean> - 是否授权成功

权限设置指引

如果自动权限申请失败,用户需要手动在系统设置中开启:

设置 → 隐私 → 广告 → 允许应用请求跟踪

注意事项

  1. 权限敏感性: APP_TRACKING_CONSENT 是用户隐私敏感权限,用户可能拒绝授权
  2. 设备兼容性: 部分设备可能不支持 OAID
  3. 权限持久性: 用户可以随时在系统设置中撤销权限
  4. 错误处理: 建议在业务代码中妥善处理权限被拒绝的情况

更新日志

v1.0.0

  • 支持获取 AAID、OAID、ODID
  • 自动权限管理
  • 同步/异步获取支持
  • 缓存机制优化

许可证

MIT License

隐私、权限声明

1. 本插件需要申请的系统权限列表:

ohos.permission.APP_TRACKING_CONSENT

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件会获取设备标识符用于广告投放和数据分析

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。