2011-09-04 15 views
38

Vogliamo essere in grado di inviare semplici messaggi di testo a TUTTI i nostri utenti iphone. Per questo abbiamo ovviamente bisogno di creare un codice lato server che memorizza i token del dispositivo e spinge i messaggi ogni volta che è necessario. C'è un buon esempio nel fare questo? (Parlando del codice del server)Implementazione delle notifiche push per iOS (lato server)

Grazie

risposta

13
// Push Notification code for IPHONE in PHP 
    $deviceToken = $users_rows['gcm_regid']; 
    $passphrase = 'pass1234'; 
    $ctx = stream_context_create(); 
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'DrinksterDevelopment.pem'); 
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

    $fp = stream_socket_client(
     'ssl://gateway.sandbox.push.apple.com:2195', $err, 
     $errstr, 120, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

    if (!$fp) 
     exit("Failed to connect: $err $errstr" . PHP_EOL); 

    echo 'Connected to APNS' . PHP_EOL; 

    $body['aps'] = array(
     // 'alert' => $_GET["message"].'#'.$_GET["type"].'#'.$_GET["deal_id"], 
     'alert' => $_GET["message"], 
     'sound' => 'default' 
     ); 
    $body['other'] = $_GET["type"].'#'.$_GET["deal_id"]; 

    $payload = json_encode($body); 
    $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 
    $result_iphone = fwrite($fp, $msg, strlen($msg)); 

    if (!$result_iphone) 
     $msg_iphone = 'Message not delivered' . PHP_EOL; 

    else 
     $msg_iphone = 'Message successfully delivered' . PHP_EOL; 

    mail('[email protected]', 'IOSPushMsgStatus', $msg_iphone); 
    fclose($fp); 
    } //if($users_rows['Platform'] == 'Web' OR $users_rows['Platform'] == 'Android') 
+0

Se utilizzo un server di hosting condiviso, è possibile che io carichi il certificato e utilizzi questo codice php? Ho provato ma non ho trovato un modo - Io uso iPage a proposito. –

+0

Ricorda che Apple tratta ripetutamente l'apertura e la chiusura della connessione APN come collegamento denial-of-service. Se invii notifiche push una volta al giorno, l'apertura/chiusura della connessione è OK secondo Apple. La domanda – gnasher729

0

mi consiglia anche di utilizzare un servizio esterno per quella come Urban Airship o PushApps. Ho più familiarità con l'ultimo e posso dirti che, oltre ai messaggi di notifica push "regolari", ricevi anche messaggi per segmentazione, posizione o persino notifica di pianificazione. All'inizio, potrebbe non sembrare una funzionalità critica per te, ma man mano che la tua base di utenti crescerà, vedrai quanto siano importanti queste funzionalità.

+4

riguardava il codice non i servizi a pagamento – Alex

Problemi correlati