Sending an APN returns BadDeviceToken, what should

2020-03-30 03:17发布

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?

标签: ios node.js apn
1条回答
▲ chillily
2楼-- · 2020-03-30 04:10

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');
查看更多
登录 后发表回答