Основная проблема с APNS - порты
так много провайдеров не открывают порт 2195
, так что сначала сконцентрируйтесь на этом, затем перейдите к хост-провайдеру
Вот код, который я пробовал, но одна проблема не может получить уведомление устройства
Привет,
я попробовал следующий код (PHP)
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apple_push_notification_production.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/>";
$deviceToken = '**********';//masked
$body = array();
$body['aps'] = array(’alert’ => "test message");
//$body['aps']['badge'] = 1;
$payload = json_encode($body);
$apnsMessage = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",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);
ответ: соединение установлено
отправка сообщения: ^ d ^ ÷ Îå0ZCd% 1ÄuwOOYš'ÊÈ} ârðm¾Í , {"aps": {"\ u2019alert \ u2019": "тестовое сообщение"}}
отправка полезной нагрузки: {"aps": {"\ u2019alert \ u2019": "тестовое сообщение"}}
Но я не могу получить уведомление
любая помощь?