2015-07-02 4 views
0

Я пытаюсь отправить уведомление на Android-устройство с PHP. Когда я вставляю текст в текстовое поле и отправляю его на устройство Android. Он отправил успех, но не добавил контент в сообщении на устройстве. Почему? И как мне это исправить? Это мой PHP код:GCM не показывать содержимое на устройстве

<?php 
include('config/dbconnect_log.php'); 
if(isset($_POST['submit'])){ 
function sendPushNotification($registration_ids, $message) { 

    $url = 'https://android.googleapis.com/gcm/send'; 
    $fields = array(
     'registration_ids' => $registration_ids, 
     'data' => $message, 
    ); 

    define('GOOGLE_API_KEY', 'my google api key'); 

    $headers = array(
     'Authorization:key=' . GOOGLE_API_KEY, 
     'Content-Type: application/json' 
    ); 
    echo json_encode($fields); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    $result = curl_exec($ch); 
    if($result === false) 
     die('Curl failed ' . curl_error()); 

    curl_close($ch); 
    return $result; 

} 

$pushStatus = ''; 

    $query = "SELECT DISTINCT googleid FROM ggevent"; 
    if($query_run = mysql_query($query)) { 

     $gcmRegIds = array(); 
     $i = 0; 
     while($query_row = mysql_fetch_assoc($query_run)) { 
      $i++; 
      $gcmRegIds[floor($i/1000)][] = $query_row['googleid']; 
     } 

    } 
    $pushMessage = $_POST['message']; 
    if(isset($gcmRegIds) && isset($pushMessage)) { 

     $message = array('msg' => $pushMessage); 
     $pushStatus = array(); 
     foreach($gcmRegIds as $val) $pushStatus[] = sendPushNotification($val, $message); 

    } 

} 
?> 

<html> 
    <head> 

    </head> 
    <body> 
    <article class="module width_full"> 
    <form method = 'POST' action = ''> 
     <fieldset> 
      <label>Content</label> 
      <textarea rows = 2 name = "message" placeholder = 'Messages to Transmit via GCM'></textarea> 
     </fieldset> 
     <div class="clear"></div> 
       </div> 
      <footer> 
       <div class="submit_link"> 
        <input type="submit" name='submit' value="Send Push Notification" class="alt_btn"> 
       </div> 
      </footer> 
    </form> 
    </article> 

    </body> 
</html> 
+0

Получил ли клиент уведомление? Давайте попробуем var_dump '$ pushStatus',' $ val', '$ message' –

+0

Я думаю, что у моего кода есть proplem. Но я не знаю, где это неправильно. – mrdragon

ответ

0

Первый зарегистрировать устройство на ГКМ и получить ключ GCM. Отправьте уведомление об этом устройстве вручную, используя ключ GCM. Curl просьба сделать так

curl --header "Authorization: key=" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -XPOST -d '{"data":{"New message through curl"},"registration_ids":["APA91bGe-Ihcjil6YXgLNEtf1fZCvcrgcn35rTOsHPrK7mxoz70TP6jmniChLXmIbLd642CWGo0fem9XrECa2ukvAvNYfNY7HcJ0JcxTInBxNn5Pml9YQIU6qwRVQ4v8GIE4oZv4vjoc"]}' 

Если вы получите уведомление, используя это, то ваше устройство было успешно

зарегистрировано Для получения дополнительной информации и детальные рабочим классифицированы для испытания пройти по ссылке

GCM with PHP (Google Cloud Messaging)

+0

Используйте ключ «msg» для получения сообщения на мобильном телефоне ...... $ message = array ('msg' => $ pushMessage); –

Смежные вопросы