2017-02-09 9 views
0

Мои приложения для Android могут получать FCM из консоли Firebase просто отлично, однако не с моего сервера приложений.Приложения для Android не получают уведомления FCM с моего сервера приложений

Вот мой фрагмент моего сценария php.

$target = 'device code'; 
$data = array('message' => 'Hello','title'=>'FCM Push Notifications'); 

function sendFCMMessage($data,$target){ 
    //FCM API end-point 
    $url = 'https://fcm.googleapis.com/fcm/send'; 
    $server_key = 'server key';  

    $fields = array(); 
    $fields['data'] = $data; 
    $fields['priority'] = 'high'; 
    if(is_array($target)){ 
    $fields['registration_ids'] = $target; 
    }else{ 
    $fields['to'] = $target; 
    } 
    //header with content_type api key 
    $headers = array(
    'Content-Type:application/json', 
     'Authorization:key='.$server_key 
    ); 
    //CURL request to route notification to FCM connection server (provided by Google)   
    $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_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
    $result = curl_exec($ch); 
    if ($result === FALSE) { 
    die('Oops! FCM Send Error: ' . curl_error($ch)); 
    } 
    curl_close($ch); 
    return $result; 
} 

$pn = sendFCMMessage($data,$target); 
echo $pn; 

, но я получил ответ на успех после запуска моего сценария, подобного этому ниже.

{ 
    "multicast_id":4696016312851064849, 
    "success":1, 
    "failure":0, 
    "canonical_ids":0, 
    "results":[ 
     { 
     "message_id":"0:1486632797062481%1749d09ff9fd7ecd" 
     } 
    ] 
} 
+0

добавить PHP флаг, так как большинство людей используют другие языки для разработки Android. я не знаю, как это работает, но, может быть, журнал должен помочь другим понять, что не так, и дать вам решение. –

+0

Привет. При отправке сообщений из Консоли Firebase он будет обрабатываться как служебная информация. В вашем PHP-скрипте вы отправляете только полезную нагрузку сообщения «data». См. Разницу между двумя [здесь] (https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages). Возможно, вы обрабатываете сообщения «уведомления» только в своем клиентском приложении. Можете ли вы разместить свой Android-код? –

+0

@AL. Спасибо ! Я не замечаю эту часть. Я нашел здесь свой ответ. –

ответ

0
this is my working code change you php code similar to this but change parrameter    



       $apiKey = "fjdfhdjskajklsjdsalkdsajkldsakdjksadjksadsa-";  

       foreach($data as $deviceid) 
       { 
        $arydevice[]=$deviceid->gcmregid; 
       } 

      //print_r($arydevice); 

       $count = count($arydevice); 

       for ($i = 0; $i < $count; $i++) { 

        $url = 'https://fcm.googleapis.com/fcm/send'; 

        $fields=array('to'=>(string)$arydevice[$i] ,'notification'=>array('title'=>'title','body'=>"1",'click_action'=>'click action','icon'=>'ic_stat_final','sound'=>'default','color'=>'#00aff0'),'data'=>array('multicast_id'=>$mid,'success'='0','schoolid'=>$SchoolId,'timestamp'=>$timestamp,'title'=>$title)); 


        $headers = array(
         'Authorization: key=' . $apiKey, 
         'Content-Type: application/json' 
        );  
        //print_r($fields); 
        //print_r($headers); 
        //die; 



    //var_dump($payload); 


        // 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_SSL_VERIFYPEER, false);  
        curl_setopt($ch,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

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

        curl_close($ch); 
       }} 
+0

Идентификатор первого устройства должен быть строковым и json-данными, которые вы хотите отправить в качестве пары ключевых значений в данных fieald –

+0

=> изменение этой косы в объектах полей i m с использованием схемы yii –

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

  • Нет связанных вопросов^_^