Sending an APN returns BadDeviceToken, what should DeviceToken format be?

流过昼夜 提交于 2019-12-01 08:07:31

问题


My backend uses Node.js with Express.js, handling APN using the npm apn package, which uses Apple's new Provider Authentication Tokens. The iOS app got permission and sent the received 32 bytes device token received to the backend, encoded as a base64 string.

But when trying to send a push notification with the device token (encoded as ascii, utf8 or base64), the APN server returns -

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

What should be the token format when sent to APN servers?


回答1:


After hours searching the internet, camp across APNs Provider API, under APNs Notification API it was mentioned that -

For the device-token parameter, specify the hexadecimal bytes of the device token for the target device.

Which worked. Device token should be encoded as hexadecimal bytes.

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


来源:https://stackoverflow.com/questions/40303787/sending-an-apn-returns-baddevicetoken-what-should-devicetoken-format-be

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!