Apple Push Notification Service APNS - Уведомления не приходят - PullRequest
7 голосов
/ 19 февраля 2010

Я пытаюсь добавить push-уведомления в свое приложение. Я использую специальный профиль. У моего appID нет подстановочного знака. Я использую следующий код PHP ...

$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);

Ошибки подключения не генерируются. Кажется, ничего не приходит с канала обратной связи.

Я получил deviceTokens из консоли органайзера и команду NSLog. Уведомления для этого приложения отображаются в моем меню настроек.

У меня есть ATT 3G и старый 2G, который я использую в качестве iPod. Ни одна из них не работает.

Без ошибок, я вне идей. У кого-нибудь есть понимание?

Дженнифер

Ответы [ 2 ]

24 голосов
/ 24 февраля 2010

Я наконец понял это.Я использовал Sandbox с профилем обеспечения AdHoc.Ad Hoc, очевидно, считается производством, а не разработкой.Я создал сертификат производства push, установил его и вуаля!Это работает.

6 голосов
/ 26 августа 2010

Mups ответ правильный. Я хотел добавить ситуацию добавления, которая имела ту же проблему (в случае, если это полезно для кого-то еще). У меня была push setup, и он работал ровно на 1 iphone (а не на других). Это было очень загадочно. Проблема заключалась в том, что на 1 iphone, который работал, была установлена ​​«отладочная» версия программы, в то время как на других была установлена ​​«специальная» версия. Наш сервер APNS был настроен на использование сертификата 'development' и шлюза.sandbox.push.apple.com

Я изменил сертификат на сервере на «производственный» сертификат, а хост на gateway.push.apple.com

(затем удалил все профили обеспечения на всех устройствах и установил специальную версию программы)

И нам было хорошо идти.

...