Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invalid token when using Apple Push Notifications (APN) for Passbook

I am trying to create a server-side implementation for passbook APN, but the server does not like the push token that the device is giving me. If I send the token to Apple's sandbox server, it sends me an "invalid token" response. If I send the token to Apple's production server, it returns the token in the feedback service as one that I should remove from my list. At least I know that the APN certificates and connection to the server work fine.

My iPhone 4s has been enabled for development. The APP ID is enabled for both development and production and the device is enabled in the provisioning profiles. I have verified that the 32 byte binary token data is correct with respect to the string token that is sent from the device.

One question that I have is, how does passbook in the device determine which token to use (development vs production)? I would prefer to be using the sandbox environment right now, but I'm not sure how to "select" it.

I have seen similar topics for this but none seem to have the answer for this issue. It is really frustrating as I feel that I'm so close to making this work! Thanks in advance for any advice!

like image 450
Mike Avatar asked Feb 17 '13 19:02

Mike


2 Answers

If you are using a pruduction certificate to connect to the APN production server, you must use a production token.

The fact that you get "invalid token" when sending the notification to the sandbox server means you are using a production token, which works only with the production server.

The fact that sending the token to the production server returns the token in the feedback service means that the application that matches the certificate (which your server is using to send the notification) is either uninstalled from the device or has push notifications disabled. Perhaps you are using a wrong certificate (perhaps a certificate that belong to a different App that was uninstalled from the device).

like image 83
Eran Avatar answered Nov 10 '22 00:11

Eran


For Passbook pushes, you need to be connecting to the production server with the Pass Type ID certificate, not the App certificate.

All Passbook pushes go through the production server, there is no way to use the sandbox.

Also, the push payload should be empty for a Passbook push. Anything you do send will be ignored.

like image 37
PassKit Avatar answered Nov 10 '22 00:11

PassKit