在WatchOS Swift开发中如何正确获取苹果手表设备ID?
watchOS获取设备标识符问题解答
报错根因
UIDevice是iOS、iPadOS专属类,watchOS框架未提供该类定义,因此调用UIDevice.current必然触发作用域不存在的报错,不属于操作错误。- 苹果全平台都禁止获取永久硬件级设备ID,所有开放获取的标识符均为隐私合规的可重置类型。
合法获取设备标识的方案
- 优先使用系统提供的供应商标识符:
直接调用watchOS专属的WKInterfaceDeviceAPI获取,示例代码:import WatchKit // 获取供应商唯一标识 if let vendorID = WKInterfaceDevice.current().identifierForVendor?.uuidString { print("当前设备供应商ID:\(vendorID)") }该标识的重置规则:同一开发者账号下的所有关联应用全部被用户卸载后,再次安装会生成新的ID,单个应用卸载重装不会重置。
- 自定义持久化标识:
如果需要更稳定的标识,可自行生成UUID存入Keychain,只要用户不执行手表抹掉全部内容的操作,该标识会永久留存,不受应用卸载重装影响,示例逻辑:// 生成自定义设备ID let customDeviceID = UUID().uuidString // 此处接入你自己封装的Keychain存储逻辑持久化保存即可
内容的提问来源于stack exchange,提问作者SVG
相关产品推荐
相关产品推荐

