我希望能够从网页中的iOS设备读取设备UUID。我知道使用JavaScript是不可能出现明显的安全问题,但我每天都使用testflight,我可以看到他们确实可以访问设备uuid。
通过在注册设备时在iPhone上安装一种配置文件,他们就会这样做。
我应该使用哪种证书/配置文件来执行类似的工作?
然后我就可以将设备UUID链接到网页会话。 我知道这需要用户的确认,这对我来说完全没问题。。 我并没有试图找到解决我们无法从代码访问设备uuid这一事实的方法,我问这是因为我知道testflight正在这样做
答案 0 :(得分:3)
确定!我想我现在就明白了。
你没错,UDID当然不是由浏览器发送的。我也确信它是由Safari的安全漏洞或类似的东西引起的,因为testflightapp添加了一个类似于UDID的唯一ID,但没有。
他们实际做的是生成一个新的DeviceID(与UDID无关)。然后,要注册设备,他们会生成一个专门针对此DeviceID的配置文件,其中包含Enrollment Payload,该设置会根据包含testflightapp生成的DeviceID的URL注册设备。
在此注册过程中,配置文件会询问设备以发送UDID(以及其他数据)。这是个人资料要求的信息:
<array>
<string>UDID</string>
<string>IMEI</string>
<string>ICCID</string>
<string>VERSION</string>
<string>PRODUCT</string>
<string>MODEL</string>
<string>DEVICE_NAME</string>
</array>
因此,当设备要求testflightapp服务器注册此设备时,他们能够将存储在配置文件中的DeviceID与当前设备的实际UDID相关联。这就是他们在浏览器中显示进程完成并保留UDID的方式。
但是,这并没有完成答案,因为我还没有解决它们如何将这个网络会话与UDID实际联系起来,即使会话已经死亡,而且DeviceID也会成为孤儿。答案似乎是(未确认,但99%肯定!)注册过程允许定义要插入到Springboard菜单中的WebClip。此WebClip在URL中写入了设备的UDID,因此每当您通过此WebClip进入testflightapp时,您都会刷新会话中的UDID号,因此会话终止无关紧要。
希望我的帖子现在有所帮助!对于前一个不完整的错误信息再次抱歉。