Серверная связь iPhone APNS - PullRequest
2 голосов
/ 30 июня 2009

У меня быстрый вопрос. Для службы push-уведомлений Apple мне нужен собственный сервер, который будет отправлять push-уведомления на серверы apple, верно?

Могу ли я сделать это с помощью простого сценария PHP на обычной учетной записи веб-хостинга или мне нужен выделенный сервер с полным доступом администратора для этого?

Если это возможно в PHP, может кто-нибудь указать мне некоторые примеры, которые могут помочь мне начать в этом? Сейчас я уверен, что у меня не возникнет проблем с реализацией клиентской части, но серверная часть все еще остается для меня загадкой ...

Спасибо!

Florian

Ответы [ 2 ]

1 голос
/ 30 сентября 2009

Основная проблема с 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": "тестовое сообщение"}}

Но я не могу получить уведомление

любая помощь?

1 голос
/ 30 июня 2009

Вы, вероятно, сможете сделать это на ограниченной учетной записи хостинга, если вы можете оставить соединение открытым для сервера большую часть времени. Пример кода:

http://code.google.com/p/php-apns/

Обратите внимание, что некоторые компании запускают сервисы, чтобы помочь вам конкретно с пуш-хостингом (я буду придерживаться пост-нейтральной позиции и не буду упоминать имена, я не уверен, какие именно сервисы пока запущены).

...