iOS DeviceCheck API - 生成令牌时出现错误代码0

3
我正在尝试实现新的iOS 11 DeviceCheck API (https://developer.apple.com/documentation/devicecheck),但令牌生成总是失败。我已在模拟器和iPhone SE上尝试过,使用了wifi和移动数据。设置中的Apple ID是我的常规非沙盒帐户。
这是一个组织的现有应用程序 - 根据文档,唯一的配置要求是确保在苹果开发者门户中设置了App ID。
还有其他人遇到这个问题吗?
确切的错误消息是:
操作无法完成。(com.apple.devicecheck.error 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")
        }
    }

1
嘿!你解决了这个问题吗?谢谢! - d0nut
不,我放弃了它,走了另一条路。 - Miles Ressler
2个回答

4
在我的情况下,这个错误是由于我的iPhone时间严重不同步造成的。我手动更改了设备的时间以匹配实际的当前时间(设置→通用→日期和时间)。之后,错误消失了,我能够生成令牌。

你需要准确的时间还是只有日期就可以了? - d0nut
1
我继续使用了精确时间。经过一些测试,看起来有一个大约±5分钟的窗口期,在这个时间范围内你将不会收到错误0。 - abertsch
谢谢更新。这解释了我之前为什么会遇到这个错误。 - d0nut
1
我在一个设备上遇到了这个错误,该设备通过了device.isSupported测试,并且其日期和时间已自动更新,因此准确度在5分钟内。我们已经在开发者门户正确设置了应用程序标识符。不知道为什么它不起作用:( - Alexander Gingell

1

你的代码看起来没问题。问题在于模拟器。它不会通过device.isSupported。你需要在真实设备上运行它。


1
我在一个设备上遇到了这个错误,该设备通过device.isSupported并且其日期和时间是自动更新的,因此正确性在5分钟窗口内。我们在开发者门户中正确设置了应用程序标识符。不知道为什么它不起作用:( - Alexander Gingell
我在某些设备上也遇到了这个错误。你找到任何解决方案了吗? - Suphakrit Nakhabat
你的设备操作系统版本是多少? - atitpatel
我使用iOS 11.3的iPhone6s。 - Suphakrit Nakhabat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接