Приветствую всех!В настоящее время я внедряю сервис обратной связи для уведомлений Apple.У меня есть завершающая часть, и я работаю как с песочницей, так и с дистрибутивными приложениями.Однако служба обратной связи, кажется, не работает .. Каждый раз, когда я пытаюсь использовать свою функцию ... страница хорошо ... просто получает тайм-аут.
Я последовал этому ответу, чтобы выполнить свою функцию: Техника PHP для запроса к серверу обратной связи APNs
Вот мой полный код функции:
function checkFeedbackServer($appBundle,$useDev = TRUE)
{
$apnsPort = 2195;
$apnsCert = keyForApp($appBundle,$useDev);
if($useDev)
{
echo 'FEEDBACK in DEVELOPER MODE <br/>';
$apnsHost = 'feedback.sandbox.push.apple.com';
}
else
{
echo 'FEEDBACK in DISTRIBUTION MODE <br/>';
$apnsHost = 'feedback.push.apple.com';
}
$finalPath = 'ssl://' . $apnsHost . ':' . $apnsPort;
echo 'OPENING STREAM TO -> ' . $finalPath . '<br/>';
echo 'USING CERT : ' . $apnsCert . "<br/>";
$stream_context = stream_context_create();
stream_context_set_option($stream_context, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client($finalPath, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $stream_context);
if(!$apns)
{
echo "ERROR $errcode: $errstr\n";
return;
}
else echo 'APNS FEEDBACK CONNECTION ESTABLISHED...<br/>';
$feedback_tokens = array();
$count = 0;
echo 'error= ' . $error . '<br/>';
echo 'errorString= ' . $errorString . '<br/>';
if(!feof($apns))
echo 'APNS NOT FINISHED <br/>';
else
echo 'APNS FINISHED? <br/>';
$result = fread($apns, 38);
echo 'result= ' . $result;
fclose($apns);
}
Я заметил, что если я уберу строки:
$result = fread($apns, 38);
echo 'result= ' . $result;
Функция будет работать правильно.Таким образом, я могу открыть соединение со службой обратной связи, как для производства, так и для разработчика, но как только я пытаюсь получить какие-либо данные с сервера, мой сценарий просто отключается ..
также функция keyForApp($appBundle,$useDev)
это просто оболочка для запроса к моей базе данных, который выбирает правильный сертификат.Я гарантирую, что он работает, так как я также использую его при отправке сообщений на устройство.