swift 错误:设备令牌验证程序上的设备令牌应为十六进制字符串

tzdcorbm  于 2023-08-02  发布在  Swift
关注(0)|答案(1)|浏览(93)

我最终尝试做的是使用推送通知更新LiveActivity,所以对我来说,第一步是能够从Push Notification Console发送推送通知到我的设备。
我目前正在使用模拟器设备,我的应用程序组织如下:

  • 主目标具有捆绑包ID com.nick.main
  • Widget目标具有捆绑包ID com.nick.main.widget

这就是我试图获得代币的方式:

do {
        let Activity = try Activity<Attributes>.request(
            attributes: Attributes2,
            contentState: initialContentState,
            pushType: .token)

        Task {
            for await pushToken in deliveryActivity.pushTokenUpdates {
                let pushTokenString = pushToken.reduce("") { $0 + String(format: "%02x", $1) }

                print("pushTokenString: \(pushTokenString)")
                
            }
        }
    } catch (let error) {
        print("Error requesting Live Activity \(error.localizedDescription)")
        
    }

字符串
x1c 0d1x的数据
当它运行时,它确实从print("pushTokenString: \(pushTokenString)")打印出一个令牌,这就是我试图在推送通知控制台上使用的。我在推送通知控制台上尝试了设备令牌验证程序,当我将令牌放在检查它时,我总是得到错误:Error: Device token should be a hex string。我还尝试使用推送通知控制台的发送功能,选择不同的捆绑包ID,每次尝试时都会产生以下错误:

{
  "code": 400,
  "message": "bad-request",
  "reason": "Invalid push token",
  "requestUuid": "53f450a0-1160-4be3-aa37-bbd65ba79e58"
}


我还想补充一下,我也尝试了这个:

let pushTokenString = pushToken.reduce("") { $0 + String(format: "%02.2hhx", $1) }


它生成的令牌与

let pushTokenString = pushToken.reduce("") { $0 + String(format: "%02x", $1) }


以下是生成的令牌的两个示例:80340949ad01bdb0db1bb77332cd7dd9721a8dc9758960d59c112d3af61af6b96b8c6cfe1bedc3cdb8cd240f57b65a6565dc7e17e0e03ee2730bd8745a874912dc284d4d4081e73a8c7a1d5feada388b495734a47f397cea198983fa1629f3db9468bb0e04c351c600c6ccbffba2a7b8e79023b0b0379641cedfe73619b1fc5b
806169d3b506558327fabb72a85fe9f3d840cfa4980dae98dd51574ab1271b8ffa251bdb87175d1b16b1445aa6a8266ac86be4d4223aaaeaa5500f94452074843985a855cd53527f79299480ca2e9b9a3fecf68c7ce472a4c618cdfe148646c46c143f40985c26ad40a435df2808a61d9026d2c8a9def5e36f1b3e36bfe8a3b2
这两个都有256的长度,但我相信长度需要64。
有什么想法/建议我错过了什么?

ar5n3qh5

ar5n3qh51#

最终的问题是我在iOS模拟器上生成了令牌。当我在物理设备上尝试时,它生成了一个有效的令牌,并按预期工作。

相关问题