2015-08-20 16 views
8

Stworzyłem stronę internetową za pomocą php i mysql. Chcę wysłać powiadomienie do urządzenia z systemem Android dla każdego postu, który jest przesłany na moją stronę.Jak wysłać powiadomienie do systemu Android ze strony php?

Czy można wysyłać powiadomienia za pomocą serwera GCM? Jeśli tak, to w jaki sposób mogę wysyłać powiadomienia do wszystkich urządzeń, na których zainstalowano aplikację na Androida?

+0

Tutaj jesteś [Google Cloud Messaging na GitHub] (https://github.com/google/gcm) – BNK

Odpowiedz

2

zdecydowałem się pisać odpowiedź na moje własne pytanie

Teraz Google wprowadzonego 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

Przede wszystkim wykonaj Implementing GCM Client i zaimplementuj klienta gcm w swojej aplikacji na Androida.

Dla serwera GCM w php można go zaimplementować w następujący sposób. Edytuj swój kod zgodnie z potrzebami, np. Podczas pisania postu. Więcej informacji na temat wdrażania serwera GCM iść do 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); 
?> 

Jest też dobra wiadomość Android Push Notifications dla początkujących.

+0

Myślę, że nie ma tagu PHP w pytaniu – Amy

+0

To zadziałało, świetnie! Zastanawiam się jednak, co stanie się, jeśli Google zmieni ten adres URL: https: // android.googleapis.com/gcm/send'? Jakie to możliwe? Jeśli są prawdopodobne, czy istnieją jakieś biblioteki PHP, które będą nadążać za zmianami, nie chcę ręcznie zmieniać tego adresu URL w mojej aplikacji na wypadek, gdyby Google go zmienił. – Taurus

Powiązane problemy