当前iOS已经禁用代码直接获取设备的UDID和IMEI了,(即使获取的有的也是假的),那怎么获取真实的UDID和IEMI呢,那就只能通过描述文件来获取了,所以我们可以在通过 安装描述文件来获取设备的当前信息,(蒲公英是这样实现的)
如果你的app是企业应用呢,不需要审核,那么直接用就好了,那要是你的是需要提交商店的呢,那么你就要小心一点用,或者提交审核的时候,不要让这个出现,我感觉应该也是可以的,
描述文件操作系统并不会校验,谁都能安装,只是安装的时候,需要用户授权安装就可以了
顺便给大家一下 苹果的官方文档地址:
https://developer.apple.com/library/content/featuredarticles/iPhoneConfigurationProfileRef/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010206-CH1-SW604
通过描述文件,安装一个后缀为.mobileConfig的描述文件,其实这个文件的本质是一直xml文档,
给大家一个udid描述文件的例子 :
https://github.com/yangfangkuo/CommonFile
里面有一个udid的文件 可以下载下来修改一下
其中,DeviceAttributes对应的key是要的信息,还可以添加其他信息,操作系统(iOS)安装完描述文件,获取完�这些信息,会将这些信息进行编码,传值给你�描述文件中的地址,该地址收到这些信息之后,必须将接口状态重定向(必须301,302会安装失败),
a :可以让服务器写这个接口,然后服务器重定向完之后,将参数 通过scheme打开客户端的app将参数传回来,
客户端在appDelegate里面将 这个参数存到本地 ,并且存到�钥匙串,这样即时app被卸载重装,也无需再次安装,
b: 也可以客户端本地起服务,�写一个接口,网上有HttpServer服务器的iOS代码,可以不需要后台帮忙,自己动手丰衣足食,但是我懒了
image.png对于非企业分发的同学们,通过这个方法的话 ,苹果审核有可能过不来,但是方法总比困难多,比如我们提交审核的时候,做点手脚,这个估计大家都干过,就不明说了
至于代码获取IMEI的好像是实现不了了,如果能实现,请顺便@一下我,我也学习一下,私有方法好像也不行,
至于UDID,网上大部分都是uuid再加点其他东西生成一个串,然后存到钥匙串,如果删除卸载,也是从钥匙串取,�但是无法避免 清空设备重装的问题,会造成这个bug,�但是也是勉强的方案,没办法,一般普通的用户都可以通过这个实现了,
对了,具体的服务器回传信息的时候, java或者php的服务器处理的代码
我参考了这个文章,在此感谢原作者,如果不让引用我就撤掉,
参考文章 : https://github.com/shaojiankui/iOS-UDID-Safari
感谢作者 ,感谢大家
网友评论