LiveActivity推送更新遇设备令牌无效问题求助
我的最终目标是通过推送通知更新Live Activity,目前用模拟器测试,应用结构如下:
- 主目标bundle id:com.nick.main
- Widget目标bundle id:com.nick.main.widget
我用以下代码获取Live Activity的推送令牌:
do { let deliveryActivity = 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)") }
运行后控制台会输出令牌,但用Device Token Validator验证时始终报错:Error: Device token should be a hex string。尝试选择不同bundle 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) }
生成的令牌示例如下:80340949ad01bdb0db1bb77332cd7dd9721a8dc9758960d59c112d3af61af6b96b8c6cfe1bedc3cdb8cd240f57b65a6565dc7e17e0e03ee2730bd8745a874912dc284d4d4081e73a8c7a1d5feada388b495734a47f397cea198983fa1629f3db9468bb0e04c351c600c6ccbffba2a7b8e79023b0b0379641cedfe73619b1fc5b806169d3b506558327fabb72a85fe9f3d840cfa4980dae98dd51574ab1271b8ffa251bdb87175d1b16b1445aa6a8266ac86be4d4223aaaeaa5500f94452074843985a855cd53527f79299480ca2e9b9a3fecf68c7ce472a4c618cdfe148646c46c143f40985c26ad40a435df2808a61d9026d2c8a9def5e36f1b3e36bfe8a3b2
这些令牌长度都是256位,但正确的设备令牌长度应为64位十六进制字符串(对应32字节),请问我哪里操作有误?
内容的提问来源于stack exchange,提问作者ez4nick

