我正在尝试实施新的iOS 11 DeviceCheck API(https://developer.apple.com/documentation/devicecheck),但令牌生成始终失败。我尝试过模拟器和iPhone SE,带有wifi和移动数据。设置中的Apple ID是我的普通非沙盒帐户。
这是一个组织的现有应用程序 - 从文档中可以看出,唯一的配置要求是确保在Apple开发人员门户中设置App ID。
其他人有这个问题吗?
确切的错误消息是:
无法完成操作。 (com.apple.devicecheck.error错误0。)
这是我正在使用的代码,没什么特别的。
if #available(iOS 11.0, *) {
let device = DCDevice.current
if (device.isSupported) {
device.generateToken(completionHandler: { (data, error) in
if let token = data{
print("token: \(token)")
}else if let error = error{
print("error: \(error.localizedDescription)")
}
})
} else {
print("devicecheck not supported")
}
}
答案 0 :(得分:3)
在我的情况下,这个错误是由于我的iPhone时间非常不同步造成的。我手动将设备的时间更改为实际的当前时间(设置→常规→日期和时间)。之后,错误消失了,我能够生成令牌。
答案 1 :(得分:0)
你的代码对我来说似乎没问题。问题是模拟器。它不会通过device.isSupported。您需要在真实设备上运行它。