HarmonyOS鸿蒙Next中uniapp打包的安卓应用在鸿蒙5以下的版本如何获取oaid

HarmonyOS鸿蒙Next中uniapp打包的安卓应用在鸿蒙5以下的版本如何获取oaid 我们当前应用是uniapp打包的安卓应用已上架华为市场,然后现在新需求需要获取oaid做归因,然后发现在我的华为mate40 即鸿蒙4系统虽然可以运行,但是获取oaid是 00000000-0000-0000-0000-000000000000,特此请教:

1、安卓应用是否可在低版本鸿蒙使用5+获取oaid?

2、若不支持,且安卓权限又无法申请ohos.permission.app__tracking__consent,是否有别的方案?

3、我方app未接入广告sdk,目前仅需oaid,推荐方案除了申请msa的sdk有别的吗?

提前感谢各位回答。


更多关于HarmonyOS鸿蒙Next中uniapp打包的安卓应用在鸿蒙5以下的版本如何获取oaid的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

学习,

更多关于HarmonyOS鸿蒙Next中uniapp打包的安卓应用在鸿蒙5以下的版本如何获取oaid的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题 1:安卓应用是否可在低版本鸿蒙使用 5+ 获取 OAID? 答:不能。

  • 鸿蒙 4(HarmonyOS 4)及以上版本 对 OAID 的获取做了更严格的限制,不再允许通过传统安卓方式(如 5+ 的 plus.device.getOAID())获取真实 OAID。 低版本鸿蒙(如 HarmonyOS 2/3) 可能还能通过 5+ 获取 OAID,但这不具备普遍性,且鸿蒙 4 已全面收紧。

问题 2:若不支持,且安卓权限又无法申请 ohos.permission.APP_TRACKING_CONSENT,是否有别的方案? 答:没有直接替代方案。

  • ohos.permission.APP_TRACKING_CONSENT 是 鸿蒙原生权限,安卓 APK 无法声明或使用该权限,即使你写在 AndroidManifest.xml 中也会被忽略。
  • 鸿蒙 4 起,任何应用(包括安卓 APK)想要获取真实 OAID,必须通过鸿蒙的合规流程。

在HarmonyOS Next中,若需在鸿蒙5以下版本获取OAID,需使用华为官方提供的OAID SDK。该SDK专为鸿蒙系统适配,支持获取匿名设备标识符。开发者需集成com.huawei.hms:ads-identifier库,调用相应API即可获取。注意,此方法仅适用于鸿蒙系统,不涉及Java或C语言。

针对您的问题,核心在于HarmonyOS 4及以下版本对Android应用获取OAID的支持情况。以下是具体分析:

  1. 安卓应用在低版本鸿蒙使用5+获取OAID的可能性
    在HarmonyOS 4及更早版本中,系统对Android兼容层(AOSP)的OAID支持可能不完整或存在限制。您遇到的00000000-0000-0000-0000-000000000000返回值通常表明系统未分配有效OAID,或兼容层未提供此接口。因此,通过标准Android API(包括5+扩展)在鸿蒙4上可能无法直接获取到有效OAID

  2. 替代方案与权限问题

    • 权限限制:Android应用无法直接申请HarmonyOS特有的ohos.permission.app__tracking__consent权限,该权限仅适用于HarmonyOS原生应用。
    • 替代路径:可尝试通过华为移动服务(HMS)的广告标识符(OAID)接口获取。HMS Core在鸿蒙系统中通常提供更稳定的支持,即使低版本鸿蒙也可能通过HMS获取OAID。需集成HMS Ads Kit或Account Kit(具体接口需根据HMS版本确认)。
  3. 推荐方案(无需接入广告SDK)

    • HMS方案:集成HMS Core SDK,调用AdvertisingIdClient.getAdvertisingIdInfo()接口(属于HMS Ads Kit)。此方案不依赖MSA SDK,但需要用户设备安装HMS Core。
    • 备用方案:若应用仅上架华为市场,可考虑逐步适配HarmonyOS Next原生开发,直接使用HarmonyOS的广告标识符接口(需申请相应权限)。但此方案不适用于当前Android应用。

总结建议
优先集成HMS Core SDK获取OAID,并测试在鸿蒙4设备上的兼容性。若仍无法获取,可能需考虑引导用户升级系统或适配HarmonyOS Next。注意:低版本鸿蒙对Android应用的OAID支持可能存在系统级限制,需实际测试验证。

回到顶部