Я пытаюсь добавить уведомления о нажатии своему приложению. Я имею, использую специальный профиль. Мой 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. Уведомления для этого приложения обнаруживаются в моем меню параметров.
У меня есть 3G ATT и старый 2G, который я использую в качестве iPod. Никакая работа.
Без ошибок посмотреть на, я вне идей. У кого-либо есть понимание?
Jennifer
Я наконец-то понял, в чем дело. Я использовал Sandbox с профилем обеспечения AdHoc. Ad Hoc, очевидно, считается производственным, а не разработкой. Я создал сертификат push production, установил его и вуаля! Все работает.
Мапс ответил правильно. Я хотел добавить дополнительную ситуацию, в которой была та же проблема (на случай, если это будет полезно кому-то еще). У меня была настройка push, и она работала ровно на 1 iphone (не на других). Это очень озадачивало.Проблема заключалась в том, что на 1 работающем iphone была установлена «отладочная» версия программы, а на других была установлена «специальная» версия. Наш сервер APNS был настроен на использование сертификата «разработки» и gateway.sandbox.push.apple.com
. Я изменил сертификат на сервере на «производственный» сертификат, а на хосте — на gateway.push.apple.com
(затем удалили все профили обеспечения на всех устройствах и установили «специальную» версию программы)
И все было готово.