在UniApp中获取安卓设备的唯一标识符时,尤其是针对安卓平板电脑,需要注意的是,为了保护用户隐私,从Android 10(API级别29)开始,Google进一步加强了对设备标识符的管理,许多传统的设备唯一标识(例如IMEI、MAC地址等)无法直接通过应用程序访问,除非用户明确授予相关权限。
以下是一些可能的替代方案来标识设备:
-
OAID(匿名广告标识符): 对于广告跟踪和设备识别,在Android 10及以上版本,可以尝试使用开放匿名设备标识符(OAID),它是由某些广告服务提供商提供的,并遵循一定的隐私政策。不过,这并不是所有设备都支持,且用户可以选择重置此标识符。
-
ANDROID_ID: 虽然不保证永久不变或始终存在,但在一些情况下,仍然可以尝试获取
ANDROID_ID
,但请注意其行为在不同版本和厂商定制系统中可能有所不同
// 使用plus.android.runtimeExec执行原生代码获取ANDROID_ID
var identifier = "";
try {
identifier = plus.android.runtimeExec({
action: "com.example.getAndroidId",
classPath: "com.example.GetAndroidIdActivity",
}).result;
} catch (e) {
console.log('获取ANDROID_ID失败');
}
上述代码片段是一个示例,实际操作中你可能需要编写一个简单的原生插件来获取ANDROID_ID
,并在Manifest中声明必要的权限。
3. UUID: UniApp框架可能会提供一个内部生成的UUID作为设备标识,但这不是一个持久不变的标识符,通常会在应用卸载后重新安装时发生变化。
const deviceId = uni.getSystemInfoSync().deviceId;