更新记录

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 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.61)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
× × 9.0 1.0.0 13 1.0.0 × ×

yc-china-api

由于uniapp对于设备信息的支持不够友好,所以写一个比较通用的设备信息采集(国内合规)插件。

更新日志

日期 版本 内容
2026-04-20 1.0.0 首次发布

支持平台

android和ios 为了兼容原生环境(object-C/java等)和uniapp环境(js/ts等),以及考虑数值类型的精度可能会丢失,所以,所有参数和返回内容,均为字符串。

方法和说明

android方法 同步还是异步 说明
getAdvertiserId 异步 获取oaid
getRefer 异步 获取本app安装refer
getDeviceInfo 同步 设备信息简要,json字符串,为了减少方法调用,同步能获取到的信息都整合到这里了,见“设备信息”说明
getDeviceInfoAll 同步 更完整的设备信息,加密版,解密方式见“解密”说明
ios方法 同步还是异步 说明
getBundleId 同步 获取bundleId,比如:com.x.x
applyAdvertiserId 异步 申请idfa权限,触发权限弹窗,在回调中返回idfa(未授权或获取失败则返回空字符串)
getAdvertiserId 异步 获取idfa,不触发权限弹窗,无权限的话返回空字符串
getDeviceInfo 同步 设备信息简要,json字符串,为了减少方法调用,同步能获取到的信息都整合到这里了,见“设备信息”说明
getDeviceInfoAll 同步 更完整的设备信息,加密版,解密方式见“解密”说明

调用示例

import * as YcApi from "@/uni_modules/yc-china-api";
let bundleId = YcApi.getBundleId()
YcApi.getAdvertiserId(data => {
    // data就是oaid/idfa
})

设备信息

// android
{
    mamu: "", // 设备厂商
    brand: "", // 设备品牌
    model: "", // 设备型号
    api_level: "", // android系统的api等级,比如"36"表示android 16
    yc_id: "", // 设备唯一id(app间不互通,同一个app卸载重装不变)
    pkg: "", // 包名
    advertiser_id: "", // oaid,建议先调用getAdvertiserId,否则无值
    anid: "" // android id
}
// 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: "", // 系统设置的时区
}

解密

由于getDeviceInfoAll获取到的信息与风控相关,需要请求网络接口进行鉴定(建议在服务器端进行) [POST] https://pfront.wzyoucai.com/interface/device/info/all header Content-Type: application/json body

{
    "plat": "", // 必填,平台,android或ios
    "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,要采集idfa的话,无论是云打包还是离线打包都要配NSUserTrackingUsageDescription(勾选了获取idfa都默认配了),如果你的项目不想给用户弹窗“是否允许追踪”,需要把manifest.json里面的 "sdkConfigs" : { "oauth" : {}, "ad" : {} // 这个去掉,如果开了广告,官方会默认带这个(会在app首次打开申请idfa权限),uts插件里没法帮你去掉 }

隐私、权限声明

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

Android 需要 android.permission.ACCESS_NETWORK_STATE、android.permission.ACCESS_WIFI_STATE 权限;为兼容 Android 11+ 的 Package Visibility 机制,插件已内置 <queries> 声明以允许查询华为/荣耀/小米/OPPO/vivo 应用市场的 installReferrer ContentProvider。Ios需要NSUserTrackingUsageDescription(非必须),用于获取idfa

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

本插件只采集合规的设备信息(不涉及用户隐私,但应用商店上架要求采集设备信息必须在隐私弹窗之后,请确保在隐私弹窗之后调用)。本插件仅在本机完成采集与加密,不主动发起任何网络请求,数据上传由宿主 App 负责。

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

本插件不包含任何广告 SDK、不展示任何广告。