Я пытаюсь добавить push-уведомления в свое приложение. Я использую специальный профиль. У моего приложения нет подстановочного знака. Я использую следующий код 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. Ни одна из них не работает.
Без каких-либо ошибок, чтобы посмотреть, у меня нет идей. У кого-нибудь есть понимание?
Дженнифер
Я наконец-то понял. Я использовал Sandbox с профилем подготовки AdHoc. Ad Hoc, по-видимому, считается производством, а не развитием. Я создал тестовый сертификат производства, установил его и вуаля! Оно работает.
Ответ Mups прав. Я хотел добавить ситуацию с добавлением, которая имела бы ту же проблему (в случае ее полезности для кого-либо еще). У меня была настройка push, и она работала ровно на 1 iphone (а не на других). Это было очень озадачительно. Проблема заключалась в том, что 1 iphone, который работал, имел «отладочную» версию установленной программы, в которой у других была версия «ad hoc». Наш сервер APNS был настроен на использование сертификата разработки и gateway.sandbox.push.apple.com
Я изменил сертификат на сервере на «производственный» сертификат, а хост – на gateway.push.apple.com
(затем удалили все профили обеспечения на всех устройствах и установили «ad hoc» версию программы)
И нам было хорошо идти.