Apple Push Notification Service APNS - Notifications not arriving

早过忘川 提交于 2019-12-18 12:34:29

问题


I am trying to add push notifications to my app. I have am using an ad hoc profile. My appID does not have a wildcard. I am using the following php code...

$deviceToken="****";masked
$time = time();

 $apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195;
$apnsCert = 'apns-dev-maui.pem';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
if($apns)
{
echo "Connection Established<br/>";
$payload = array();
$payload['aps'] = array('alert' => 'It works!!', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;

        print "sending message :" . $apnsMessage . "<br/>";
        print "sending payload :" . $payload . "<br/>";
        fwrite($apns, $apnsMessage);

}
else
{       
        echo "Connection Failed";
        echo $errorString;
        echo $error;
}
// socket_close($apns);
fclose($apns);

No connection errors are generated. Nothing seems to be coming from the feedback channel.

I got the deviceTokens from the organizer console and an NSLog command. The notifications for this app are showing up in my settings menu.

I have an ATT 3G and an old 2G that I use as an iPod. Neither work.

With no errors to look at, I am out of ideas. Anyone have any insight?

Jennifer


回答1:


I finally figured it out. I was using Sandbox with an AdHoc provisioning profile. Ad Hoc is apparently considered production instead of development. I created the push production certificate, installed it and voila! It works.




回答2:


Mups answer is right. I wanted to add an addition situation that had the same problem (in case its helpful to anyone else). I had push setup and it was working on exactly 1 iphone (not the others). This was very puzzling. The issue was that the 1 iphone that worked had a 'debug' version of the program installed, where the others had an 'ad hoc' version installed. Our APNS server was setup to use the 'development' certificate and gateway.sandbox.push.apple.com

I changed the certificate on the server to a 'production' certificate and the host to gateway.push.apple.com

(then deleted all the provisioning profiles on all the devices, and installed 'ad hoc' version of the program)

And we were good to go.



来源:https://stackoverflow.com/questions/2293155/apple-push-notification-service-apns-notifications-not-arriving

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