行!我想我现在明白了。
没错,UDID 当然不是由浏览器发送的。我也确信它是由 Safari 的安全漏洞或类似的东西得到的,因为 testflightapp 添加了一个类似于 UDID 的唯一 ID,但没有。
他们实际上所做的是生成一个新的 DeviceID(与 UDID 无关)。然后,为了注册设备,他们会生成一个专门为此 DeviceID 制作的配置文件,其中包含一个注册有效负载,该有效负载根据包含 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 的方式。
但是,这并没有完成答案,因为我还没有解决(还)他们实际上是如何将此 Web 会话与 UDID 关联起来的,即使在会话终止并且 DeviceID 成为孤立状态时也是如此。答案似乎是(未确认,但 99% 肯定!)注册过程允许定义要插入到 Springboard 菜单中的 WebClip。此 WebClip 在 URL 中写入了设备的 UDID,因此每当您通过此 WebClip 进入 testflightapp 时,您都会将您的 UDID 编号刷新到会话中,因此会话是否终止也没关系。
希望我的帖子现在有帮助!再次为不完整的错误信息再次道歉。