I am implementing push notifications in my application, in the development part it is working fine, and I receive push notifications well. When I decided to publish it in the app store, I implemented it for distribution (I use the certificate and provisioning profile for distribution), I made the same steps and I converted the .p12 files to .pem through shall, and I combine the certificate.pem and key.pem to another file ck.pem. In the PHP file, I did the following:
$passphrase = 'The passphrase I put it in the shall';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
I already changed sandbox to ssl://gateway.push.apple.com:2195 in my php.
I created production.pem with this steps.
$ openssl x509 -in aps_developer_identity.cer -inform der
-out PushChatCert.pem
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
and I uploade my ck.pem to my shared host. It is nothing errors but it does not push notification.
In my php it said : Connected to APNS Message successfully delivered
You probably use wrong deviceToken. Remember that production deviceToken and development deviceToken are different!
You should log your deviceToken and then iPhone Configuration Utility will log you correct production deviceToken.
I believe in server side not using the distribution PEM file. The main fundamental rule is App and server should run in same mode.If your app is running in debug mode then server also should also use the development PEM file and same like if your app is running in release mode then server also should use distribution PEM file.
来源:https://stackoverflow.com/questions/18504726/apple-push-notification-is-not-working-for-distribution-but-working-for-developm