2015-08-20 5 views
8

Ho sviluppato un sito Web utilizzando php e mysql.Voglio inviare notifiche al dispositivo Android per ogni post che viene caricato sul mio sito web.Come inviare notifiche ad Android da php?

È possibile inviare notifiche tramite GCM Server? In caso affermativo, come posso inviare una notifica a tutti i dispositivi su cui è installata l'app per Android?

+0

Qui sono [Google Cloud Messaging a GitHub] (https://github.com/google/gcm) – BNK

risposta

2

ho deciso di inviare risposta per la mia domanda

Ora Google ha introdotto FCM

<?php 
define('API_ACCESS_KEY','Api key from Fcm add here'); 
$fcmUrl = 'https://fcm.googleapis.com/fcm/send'; 
$token='235zgagasd634sdgds46436'; 

/ $notification = [ 
      'title' =>'title', 
      'body' => 'body of message.', 
      'icon' =>'myIcon', 
      'sound' => 'mySound' 
     ]; 
     $extraNotificationData = ["message" => $notification,"moredata" =>'dd']; 

     $fcmNotification = [ 
      //'registration_ids' => $tokenList, //multple token array 
      'to'  => $token, //single token 
      'notification' => $notification, 
      'data' => $extraNotificationData 
     ]; 

     $headers = [ 
      'Authorization: key=' . API_ACCESS_KEY, 
      'Content-Type: application/json' 
     ]; 


     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,$fcmUrl); 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification)); 
     $result = curl_exec($ch); 
     curl_close($ch); 


     echo $result; 
12

Prima di tutto, seguire Implementing GCM Client e implementare il client gcm nella propria app Android.

Per GCM Server in php è possibile implementarlo nel modo seguente. Modifica il codice in base alle tue esigenze come lo codifichi quando pubblichi il post. Per ulteriori informazioni sull'implementazione del server GCM andare a Implementing GCM Server

<?php 
    // Replace with the real server API key from Google APIs 
    $apiKey = "your api key"; 

    // Replace with the real client registration IDs 
    $registrationIDs = array("reg id1","reg id2"); 

    // Message to be sent 
    $message = "Your message e.g. the title of post"; 

    // Set POST variables 
    $url = 'https://android.googleapis.com/gcm/send'; 

    $fields = array(
     'registration_ids' => $registrationIDs, 
     'data' => array("message" => $message), 
    ); 
    $headers = array(
     'Authorization: key=' . $apiKey, 
     'Content-Type: application/json' 
    ); 

    // Open connection 
    $ch = curl_init(); 

    // Set the URL, number of POST vars, POST data 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    //curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    // curl_setopt($ch, CURLOPT_POST, true); 
    // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    // Execute post 
    $result = curl_exec($ch); 

    // Close connection 
    curl_close($ch); 
    // print the result if you really need to print else neglate thi 
    echo $result; 
    //print_r($result); 
    //var_dump($result); 
?> 

C'è anche un buon posto Android Push Notifications per i principianti.

+0

Penso che non ci siano tag PHP in questione – Amy

+0

Questo ha funzionato, fantastico! Tuttavia, mi chiedo cosa succede se Google cambia questo URL: 'https: // android.googleapis.com/gcm/send'? Quanto è probabile? Se è probabile, ci sono librerie PHP che manterranno il passo con le modifiche, non voglio cambiare manualmente quell'URL nella mia app nel caso in cui Google la modifichi. – Taurus