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