2017-09-27 22 views
0

みんな! FIREbase通知を送信するためにPHPを使用する際に問題が発生しています。 Firebaseコンソールから送信すると通知が出ますが、PHPから送信すると通知はありません。PHPでFirebase通知を送信

何が問題なのですか?ここで

は私のPHPコードです:

<?php 
$message = 'ojlaasdasdasd'; 
$title = 'ojla'; 
$path_to_fcm = 'https://fcm.googleapis.com/fcm/send'; $server_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5LnDZO2BpC2aoPMshfKwRbJAJfZL8C33qRxxxxxxxxxxxxL6'; 
$key = 'eqnlxIQ1SWA:APA91bGf1COAZamVzT4onl66_lEdE1nWfY7rIADcnt9gtNYnw7iWTwa7AYPYTHESFholkZ89ydCQS3QeL-lCIuiWTXiqoDREO0xhNdEYboPvqg8QsBYkrQVRlrCLewC4N-hHUja1NG4f'; 
$headers = array(
       'Authorization:key=' .$server_key, 
       'Content-Type: application/json'); 

$fields = array 
      (
       'to'  => $key, 
       'notification' => array('title' => $title,'body' => $message) 
      ); 


$payload = json_encode($fields); 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, '$path_to_fcm'); 
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, $payload); 
$result = curl_exec($ch); 
echo $result; 
curl_close($ch); 


?> 

私は、サーバー

答えて

0

から任意のエコーを得ることはありませんme.just変更キーとトークン

<?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; 
のために正常に動作し、このcode.Itsを試してみてください
+0

ありがとうございました! 'icon' myIconはどこに保存されていますか? は「アイコン」フィールドです。通知バーの下にスワイプすると表示されるアイコンです。スワイプすると、通知の横にアイコンが表示されないため、 – Swanson

+0

は必要ありません.appの開発者はit.ifを処理します受け入れられたとして回答をマーク – iCoders

+0

アンドロイドの開発者は、reuqirementに基づいて通知をカスタマイズすることができます – iCoders

0

次の機能を使用してFirebaseにHTTPリクエストを送信します。

function request($url, $body, $method = "POST", $header = "Content-type: application/x-www-form-urlencoded\r\n") 
{ 
    switch ($method) { 
     case 'POST': 
     case 'GET': 
     case 'PUT': 
     case 'DELETE': 
      break; 
     default: 
      $method = 'POST'; 
      break; 
    } 
    $options = array(
     'http' => array(
      'header' => "$header", 
      'method' => "$method", 
      'content' => $body 
     ) 
    ); 
    $context = stream_context_create($options); 
    $data = file_get_contents($url, false, $context); 
    $data = json_decode($data, true); 
    return $data; 
} 
このコードは何の問題もなく動作しますが、私にとっては

$fcm_key = ""; 
$body = array("data" => $data, "to" => "$fcm_token"); 

$body = json_encode($body); 
$json = request("https://fcm.googleapis.com/fcm/send", $body, "POST", "Authorization: key=$fcm_key\r\nContent-Type:application/json"); 

は、私は次のコードを使用した機能を実行するには。正しいFCMデバイストークン($fcm_token)を使用し、正しいFCMキー($fcm_key)を設定していることを確認してください。

関連する問題