开发调试过程中为了区分不同设备通常需要获取UUID、IMEI、IMSI、型号、厂商等设备信息,uni-app可以通过plus.device.getInfo来获取设备信息,但是安卓端一旦用户不授权就无法获取,iOS端通过该方法获取设备唯一标识则不需要特别授权的。
使用plus.device.getInfo时需要注意的是,在一些android上如果被拒绝授权,将不触发success和fail回调方法,一直卡着也不报错!所以安卓端最好还是不要使用plus.device.getInfo来获取UUID唯一标识等设备信息,以免埋下深坑!这个问题在DCloud问答的获取设备信息(imei、imsi、uuid)的调整使用plus.device.getInfo方法的说明中就有提到。
针对由于用户不授权而无法获取UUID唯一标识等设备信息的问题,我们其实可以自己生成UUID作为用户设备唯一标识,在启动的时候用plus.io.requestFileSystem将其保存到应用私有文档目录下,第一次启动就创建并用uni.setStorage保存到本地缓存中,之后直接到缓存中获取即可。
不过这种方案存在一个问题,那就是重装应用UUID会改变,相对于卡死而无法获取设备信息这已经是很好的解决方案了,如果你有更好解决方案麻烦跟我说一下,好让我改进一下。
需要相关实现代码请到公众号发送关键字“s4515”获取,需要注意的是,要在App.vue的onLaunch等方法先获取UUID,不然会产生两个UUID。
展开阅读全文