2009-06-30 4 views
2

J'ai une question rapide. Pour le service de notification Apple Push, j'ai besoin d'avoir mon propre serveur, qui enverra les notifications push aux serveurs Apple, non? Est-ce que je peux le faire avec un simple script PHP sur un compte d'hébergement régulier, ou ai-je besoin d'un serveur dédié avec un accès administrateur complet pour cela?Server Side iPhone APNS Communication

Si cela est possible en PHP, quelqu'un peut-il me diriger vers des exemples qui peuvent m'aider à démarrer? En ce moment, je suis assez confiant que je n'aurai pas de mal à implémenter la partie côté client, mais le côté serveur est encore un peu un mystère pour moi ...

Merci!

Florian

Répondre

1

Vous serez probablement en mesure de le faire sur un compte d'hébergement limité, aussi longtemps que vous pouvez laisser la connexion ouverte au serveur la plupart du temps. Quelques exemples de code:

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

Notez également que certaines entreprises commencent des services pour vous aider spécifiquement pousser l'hébergement (je vais garder la mention après neutre et pas les noms, je ne suis pas sûr quels sont les services en cours d'exécution pour le moment).

1

Le principal problème avec APNS est ports

tant de fournisseurs doesnt ouvert 2195 Port

concentré ainsi de suite qui vont d'abord puis pour le fournisseur hôte

Voici le code que j'ai essayé, mais un problème n'est pas en mesure d'obtenir une notification de l'appareil

Salut,

i essayé le code suivant (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); 

réponse est Connexion établie envoyer un message: d^÷ Îå0ZCd% 1ÄuwOOYš'ÊÈ} ârðm¾Í, { "aps": { "\ u2019alert \ u2019": "message de test"}} envoi Charge utile: { "aps": { "\ u2019alert \ u2019": "message de test"}}

Mais ne suis pas en mesure d'obtenir la notification

toute aide?