Пожалуйста помогите! Я изо всех сил пытался найти ответ на свою проблему, но все время безуспешно.
Я успешно реализовал push-уведомление о разработке для своего приложения, но когда отправил приложение и обновил код в рабочей службе, я не могу отправить push-уведомление. Ошибок при отправке у меня нет вообще, но пуш-уведомления не приходят на зарегистрированные устройства.
PHP-код для моего сервера выглядит примерно так:
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', 'apns-dev.pem');
$apns = stream_socket_client('ssl://gateway.push.apple.com:2195', $error, $errorString, 15, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns)
{
echo "ERROR";
} else
{
if ($error)
{
echo "ERROR: " . $error . ": " . $errorString;
}
else
{
echo "<p> Processing....</p><br />";
$inputMessage = utf8_encode($_POST['text']);
echo "<p>MESSAGE: $inputMessage</p>";
$payload['aps'] = array('alert' => $inputMessage, 'sound' => 'default');
$payload = json_encode($payload);
$apnsMessagePart1 = chr(0) . chr(0) . chr(32);
$apnsMessagePart3 = chr(0) . chr(strlen($payload)) . $payload;
$xml = simplexml_load_file("tokens.xml");
if ($xml != NULL) {
$devicesCount = 0;
foreach($xml->children() as $deviceToken)
{
echo "<p>processando aparelho com o token: $deviceToken</p>";
$apnsMessagePart2 = pack('H*', str_replace(' ', '', $deviceToken));
$apnsMessage = $apnsMessagePart1 . $apnsMessagePart2 . $apnsMessagePart3;
$success = fwrite($apns, $apnsMessage);
if (!$success)
echo "Error sending message to $deviceToken";
else
$devicesCount++;
}
socket_close($apns);
fclose($apns);
echo "<h2>... done!</h2>";
}
else
{
echo "<h4>error: no xml file found!</h4>";
}
}
}