Apple Push Notification Service APNS - Notifications not arriving
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 gen开发者_如何转开发erated. 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
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.
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.
精彩评论