DCloud_App_Array
DCloud_App_Array
  • 发布:2019-06-28 16:17
  • 更新:2024-11-15 11:40
  • 阅读:52994

获取设备信息(imei、imsi、uuid)的调整使用plus.device.getInfo方法的说明

分类:HTML5+

本功能自HBuilderX 2.0.3+起支持

Android平台各大应用商店已经要求API等级(targetSdkVersion)为26或以上。高版本Android系统完善了授权系统,获取设备信息(如imei)需要经过用户授权确认,弹出获取设备信息的授权提示框:

如果不在manifest里指定,HBuilder的打包默认targetSdkVersion是21,而HBuilderX已经是26了。targetSdkVersion变高就会引发动态权限问题。

目前5+ API获取设备信息是通过以下属性方式读取

为了保证以上属性可用,应用需在启动时进行初始化赋值,原生层这时候就需要申请获取设备信息权限读取imei、imsi等信息。
即使应用没有调用以上API,应用启动时仍然执行此初始化赋值逻辑,导致应用启动时弹出上图所示的设备信息授权提示框。

为了避免应用启动时弹出设备信息授权提示框,新增plus.device.getInfo方法。当应用需要获取设备信息时调用此API,才会触发弹出授权提示框,不获取设备信息就不会弹出设备信息授权提示框。
建议使用5+ API的属性方式获取imei、imsi、uuid信息的代码调整使用plus.device.getInfo方法

至于属性和方法的区别,可能普通程序员看不懂,但做底层的会知道,属性就是启动时就必须初始化的。

原来的plus.device.imei、plus.device.imsi、plus.device.uuid等属性方式的API不推荐使用,后续会逐步废弃。
为了保证向下兼容,目前还可以使用,但不一定可以获取到正确的值。
取决于应用启动前是否已经获取设备信息权限:

  1. 如果应用启动前没有获取设备信息授权(询问或拒绝状态),则无法获取设备信息,按权限被拒绝的逻辑处理。
  2. 如果应用获取设备信息授权,则可以获取设备信息。

注意:调用plus.device.imei、plus.device.imsi、plus.device.uuid不会触发授权提示框

1 关注 分享
trim363

要回复文章请先登录注册

1***@qq.com

1***@qq.com

而且,在hbuilderX下,plus.device.xxx都获取不到了
2019-07-11 09:21
1***@qq.com

1***@qq.com

我在不同的机器上测试,有的机器能获取,有的机器获取不了,是什么原因啊?
2019-07-11 09:20
老哥教教我

老哥教教我

回复 DCloud_App_Array :
还有就是 2.0.4 发布帖子带图片时候报错,但是帖子却发布成功了
下面是我发的反馈
http://ask.dcloud.net.cn/question/74303
2019-07-10 20:51
老哥教教我

老哥教教我

回复 DCloud_App_Array :
官方说2.0.3 alpha 新加这个功能,获取设备信息(imei、imsi、uuid)
我用的手机 iPhone6 Plus 版本 12.3.1
HBuilder X 2.0.4.20190706-alpha
真机调试时候获取uuid手机信息是可以的
但是ios打包后安装测试就不执行了,根本不执行,


打包后下面代码不执行,大佬试试吧

plus.device.getInfo({
success: function(e) {
console.log(e.uuid);
plus.storage.setItem('uuid1309', e.uuid);
},
fail: function(e) {
mui.alert(3);
}
});
2019-07-10 18:34
DCloud_App_Array

DCloud_App_Array (作者)

回复 老哥教教我 :
真机运行是否可以?如果有问题请提供完整的示例应用。
2019-07-10 16:03
3***@qq.com

3***@qq.com

回复 DCloud_heavensoft :
正式版什么时候发 alpha版有问题
2019-07-09 09:50
老哥教教我

老哥教教我

回复 DCloud_heavensoft :
我现在就是用的最新版alpha版 2.0.4 出现的这个问题,升级到2.0.5不知道能不能好
2019-07-08 17:43
老哥教教我

老哥教教我

回复 DCloud_heavensoft :
坐等更新,感谢
2019-07-08 17:21
DCloud_heavensoft

DCloud_heavensoft

回复 3***@qq.com :
alpha版已经发了
2019-07-08 17:08
老哥教教我

老哥教教我

回复 DCloud_App_Array :
app 是 id H57F2E369 用 2.0.4 ios打包后 下面代码不执行
下面是最新获取 uuid方法
plus.device.getInfo({
success: function(e) {
console.log(e.uuid);
plus.storage.setItem('uuid1309', e.uuid);
fn();
},
fail: function(e) {
jishuqi1948++;
uuidxunhuan1304();
if (jishuqi1948 == 1) {
mui.alert("请允许应用获取IMEI、IMSI权限后重试,否则无法使用智慧小区服务!");
}
}
});
2019-07-08 17:00