【问题标题】:Sending an APN returns BadDeviceToken, what should DeviceToken format be?发送APN返回BadDeviceToken,DeviceToken格式应该是什么?
【发布时间】:2023-04-03 13:33:02
【问题描述】:

我的后端使用带有 Express.js 的 Node.js,使用 npm apn 包处理 APN,该包使用 Apple 的新提供者身份验证令牌。 iOS 应用获得许可,将接收到的 32 字节设备令牌发送到后端,编码为 base64 字符串。

但是当尝试使用设备令牌(编码为 ascii、utf8 或 base64)发送推送通知时,APN 服务器返回 -

{"sent":[],"failed":[{"device":"....token....","status":"400","response":{"reason":"BadDeviceToken"}}]}

发送到 APN 服务器时的令牌格式应该是什么?

【问题讨论】:

    标签: ios node.js apn


    【解决方案1】:

    在网上搜索了几个小时后,在APNs Provider API 下露营,在APNs Notification API 下有人提到-

    对于device-token 参数,指定目标设备的设备令牌的十六进制字节。

    哪个有效。设备令牌应编码为十六进制字节

    // Node.js snippet
    let deviceToken = Buffer.from(base64Token, 'base64').toString('hex');
    

    【讨论】:

    • @AjitejKaushik 也一样,你能弄清楚吗?我见过github.com/node-apn/node-apn/issues/506,但没有幸运
    • 我发现问题出在我设置的环境中,证书是生产的,而我尝试使用的令牌是暂存的。
    • 投反对票主要用于无关或非常糟糕的答案,如果它对您不起作用,请继续搜索。如果您找到答案,请将其发布在下面,例如 @AjitejKaushik 应将最后一条评论粘贴为该问题的单独答案。这样,每个观众都会投票选出对他有用的答案。无需减少其他答案,这不是比赛。
    • 阅读原始问题-“发送到 APN 服务器时 token 格式应该是什么?”,问题是“格式是什么”,而不是“如何解决一个坏的设备响应”。上面的答案直接回答了这个问题——它是十六进制字节。叹息。
    • 这没用,有谁解决了他的工作原理吗?我仍然遇到同样的错误@Kof
    猜你喜欢
    • 2017-10-26
    • 2015-10-20
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2013-04-08
    • 2015-02-11
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多