更新记录
1.0.1(2026-05-04)
[新增]支持harmony [新增]app(ios),支持获取attributiontoken [优化]app(ios),去掉NSUserTrackingUsageDescriptio权限申请(权限最小化原则),由宿主自行申请,无权限也能正常运行(idfa返回空字符串,applyAdvertiserId则无任何作用)
1.0.0(2026-04-20)
首次发布,支持android和ios
平台兼容性
uni-app(4.61)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | √ | 1.0.0 | × | × | √ | 1.0.0 | √ | 1.0.0 | 9.0 | 1.0.0 | 13 | 1.0.0 | 14 |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.61)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 9.0 | 1.0.0 | 13 | 1.0.0 | 14 | × |
yc-china-api
由于uniapp对于设备信息的支持不够友好,所以写一个比较通用的设备信息采集(国内合规)插件。
支持平台
android和ios和harmony 为了兼容原生环境(object-C/java等)和uniapp环境(js/ts等),以及考虑数值类型的精度可能会丢失,所以,所有参数和返回内容,均为字符串。
方法和说明
| android方法 | 调用方式 | 说明 |
|---|---|---|
| getAdvertiserId | 异步 | 获取oaid |
| getRefer | 异步 | 获取本app安装refer |
| getDeviceInfo | 同步 | 设备信息简要,json字符串,为了减少方法调用,同步能获取到的信息都整合到这里了,见“设备信息”说明 |
| getDeviceInfoAll | 同步 | 更完整的设备信息,加密版,解密方式见“解密”说明 |
| ios方法 | 调用方式 | 说明 |
|---|---|---|
| getBundleId | 同步 | 获取bundleId,比如:com.x.x |
| getAttributionToken | 同步 | 获取attributiontoken |
| applyAdvertiserId | 异步 | 宿主App已配置NSUserTrackingUsageDescription时申请idfa权限,并在回调中返回idfa(未配置、未授权或获取失败则返回空字符串) |
| getAdvertiserId | 异步 | 获取idfa,不触发权限弹窗;未配置NSUserTrackingUsageDescription、未授权或获取失败都返回空字符串 |
| getDeviceInfo | 同步 | 设备信息简要,json字符串,为了减少方法调用,同步能获取到的信息都整合到这里了,见“设备信息”说明 |
| getDeviceInfoAll | 同步 | 更完整的设备信息,加密版,解密方式见“解密”说明 |
| Harmony方法 | 调用方式 | 说明 |
|---|---|---|
| getAdvertiserId | 异步 | 获取oaid,调用时申请APP_TRACKING_CONSENT权限;未授权或获取失败则返回空字符串 |
| getDeviceInfo | 同步 | 设备信息简要,json字符串,为了减少方法调用,同步能获取到的信息都整合到这里了,见“设备信息”说明 |
| getDeviceInfoAll | 同步 | 更完整的设备信息,加密版,解密方式见“解密”说明 |
调用示例
import * as YcApi from "@/uni_modules/yc-china-api";
let bundleId = YcApi.getBundleId()
YcApi.getAdvertiserId(data => {
// data就是oaid/idfa,Harmony未授权时为空字符串
})
设备信息
// android
{
mamu: "", // 设备厂商
brand: "", // 设备品牌
model: "", // 设备型号
api_level: "", // android系统的api等级,比如"36"表示android 16
yc_id: "", // 设备唯一id(app间不互通,同一个app卸载重装不变)
pkg: "", // 包名
advertiser_id: "", // oaid,建议先调用getAdvertiserId,否则无值
anid: "", // android id
timezone: "", // 系统设置的时区
country: "" // 系统设置的国家/地区(两位,比如:US)
}
// ios
{
model: "", // 设备型号
os_version: "", // ios系统版本
bundle_id: "", // bundleId
advertiser_id: "", // idfa,建议先调用getAdvertiserId,否则无值
idfv: "", // idfv
yc_id: "", // 设备唯一id,卸载重装不变
country: "", // 系统设置的国家/地区(两位,比如:US)
country_apple: "", // apple认定的国家(三位,比如:USA),通过ios系统接口获得,首次可能无值,如依赖该值,建议每1秒重试一次getDeviceInfo(),最多3次即可
timezone: "", // 系统设置的时区
}
// Harmony
{
mamu: "", // 设备厂商
brand: "", // 设备品牌
model: "", // 设备型号
os_version: "", // Harmony系统版本
api_level: "", // Harmony API版本
yc_id: "", // 设备唯一id,基于bundleName + AAID生成;AAID首次异步获取中时可能为空,建议稍后重试一次getDeviceInfo()
pkg: "", // 包名/bundleName
advertiser_id: "", // oaid,建议先调用getAdvertiserId,否则无值
aaid: "", // App scoped AAID,用于对齐android id并生成yc_id
country: "", // 系统设置的国家/地区(两位,比如:US)
timezone: "" // 系统设置的时区
}
解密
由于getDeviceInfoAll获取到的信息与风控相关,需要请求网络接口进行鉴定(建议在服务器端进行)
[POST] https://pfront.wzyoucai.com/interface/device/info/all
header
Content-Type: application/json
body
{
"plat": "", // 必填,平台,android、ios或Harmony
"pkg": "", // 必填,android传包名,ios传bundleId,示例:com.x.x
"data": "", // 通过getDeviceInfoAll方法获取到的值
"version": "1.0.0", // 可选,uts插件版本
}
请求示例:
curl -X POST -H 'Content-Type: application/json' -d '{"plat":"ios","pkg":"com.x.x","data":"xxx","version":"1.0.0"}' https://pfront.wzyoucai.com/device/info/all
建议:一般情况下,客户端直接用getDeviceInfo即可;如果对风控有要求可以调用getDeviceInfoAll,发到自己的服务器端,然后请求该接口解密。
依赖说明
android,云打包自定oaid的包,无需特殊配置;离线打包,需要把官方打包工程中的oaid_xxx.aar复制到libs里 ios,插件不内置NSUserTrackingUsageDescription,遵循权限最小化原则;如果宿主App需要采集idfa,请在App自身配置NSUserTrackingUsageDescription并按业务合规要求申请ATT权限。未配置或未授权时,getAdvertiserId/applyAdvertiserId都会返回空字符串,且不会触发权限弹窗或闪退。 getAttributionToken通过Apple AdServices获取Apple Ads归因token,不需要额外plist权限;token有效期为24小时,服务端可用该token请求Apple归因接口。 如果你的项目不想给用户弹窗“是否允许追踪”,需要把manifest.json里面的 "sdkConfigs" : { "oauth" : {}, "ad" : {} // 这个去掉,如果开了广告,官方会默认带这个(会在app首次打开申请idfa权限),uts插件里没法帮你去掉 }
Harmony,插件仅为获取OAID声明ohos.permission.APP_TRACKING_CONSENT,并在调用getAdvertiserId时申请权限;未授权或系统返回全0标识时返回空字符串。AAID为App scoped标识,首次启动时AAID为异步获取,getDeviceInfo/getDeviceInfoAll第一次调用可能暂时返回空yc_id,稍后重试即可。

收藏人数:
购买普通授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(1)
下载 15
赞赏 1
下载 12159450
赞赏 1918
赞赏
京公网安备:11010802035340号