2017-11-08 34 views
0

私はFirebase Cloud Messaging Serviceに通知を送信しているPHPサーバで作業しています。私はhttps://github.com/brozot/Laravel-FCMを使用しています。FCM - 通知が送信されたかどうかを確認します。

私は、サンプルコードを使用してPHPから通知が送られた:

$notificationBuilder = new \LaravelFCM\Message\PayloadNotificationBuilder('my title'); 
$notificationBuilder->setBody('Hello world') 
        ->setSound('default'); 
$notification = $notificationBuilder->build(); 

$topic = new \LaravelFCM\Message\Topics(); 
$topic->topic('news'); 
$topicResponse = \FCM::sendToTopic($topic, null, $notification, null); 
$topicResponse->isSuccess(); //this returns true 
$topicResponse->shouldRetry(); //this returns false 
$topicResponse->error(); //this returns null 

私は、通知は次の2つの方法で適切に送信されたかどうかを確認してみました: - JavaScriptクライアントを使用して、私はエラーを取得 - HTTPSが必要で、私は」ローカルホストで作業中 - Grow - > Notificationsのhttps://console.firebase.google.comにチェックインしてください。現時点ではできないiOS/Androidアプリケーションを追加するまで表示されません。(まだ生産中です)

CURLでこれをやろうとしましたが、私はこれを見つけました:How can I confirm that firebase notification was actually sent (fcm)?。 「OAuth 2アクセストークン、ログインCookie、またはその他の有効な認証資格情報が必要です(https://developers.google.com/identity/sign-in/web/devconsole-projectを参照してください)」という認証エラーが表示されます。私はヘッダーに "Authorization:key = AAA ...."を使用します。 laravel-fcmライブラリのFCM_SERVER_KEYと同じキーを使用していますが、これを変更するとエラーが発生するため、正しいです。

私は何かが見つからないのですか、どこに送られた通知のリストを実際に見ることができませんか?

編集:curlを使用しているときに間違ったURL(ドキュメントの中のプロジェクトIDが入っています)を使用しました。今私は認証エラーを取得しません。しかし、まだ質問は残っています。

答えて

0

ペイロードフォーマットの2倍を確認するのが適切です。 ARC [Advance REST Client]を使用して、通知が手動で送信されたことを確認します。

{ 
    "registration_ids": [ 
    "eGHYv_OI5ak:APA91bGM99ttwgJVZNOTC3rrkZYchYHyDDyLFIGOgDZiDXXZcYOd12nPH3cbCsokKCRozswE-nKx8tn-KY2Sw-YZ7GL117elxTOczSjaGiuk8ZI3CnsYmmn3BQ-PEHQl58PWjdUl4x56" 
    ], 
    "collapse_key": "", 
    "data": { 
    "payload": { 
     "EncryptId": "SjaGiuk8ZI3CnsYmmn3BQ-PEHQl58PWjdUl4x56", 
     "messagetype": "1", 
     "imageurl": "", 
     "url": "https://www.stackoverflow.com/mymessages/?part=RIALL", 
     "message": "Someone Send Message", 
     "landing": "" 
    } 
    } 
} 
:ここ

は、それが

<?php 

$responsearray = sendFCMnotification($ANDROIDPUSHNOTIFYAUTHKEYFCM,$payloadFormate,$pushMessage); 
if($responsearray['response']['info'] == 200){ 
    if ($resposeMessage && $responsearray['response']['failure'] == 1) { 
     // here failue response 
    }else if($response['message_id'] && $responsearray['response']['success'] == 1){ 
     // here success response 
    } 
} 

function sendFCMnotification($authCode,$message, $id) { 
    $headers = array (
      'Authorization: key='.$authCode,// here Assigning Authentication Key 
      'Content-Type: application/json' 
    ); 
    $url = 'https://fcm.googleapis.com/fcm/send'; 
    $fields = array (
      'registration_ids' => array ($id), // here Mobile Registration ID 
      'collapse_key'=>'Test Message', 
      'data' => array (
        "payload" => $message 
      ) 
    ); 
    $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_VERIFYPEER, false); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
    $res_json = curl_exec ($ch); 
    $result  = get_object_vars(json_decode($res_json)); 
    $code  = array('info' => curl_getinfo($ch, CURLINFO_HTTP_CODE)); 
    $merge1  = array_merge($code,$fields); 
    $merge  = array_merge($result,$merge1); 
    $reposeDet = array('response' => $merge); 
    curl_close ($ch); 
    return $reposeDet; 
} 
?> 

ペイロードフォーマットを助けカール希望を使用して私のコードです

関連する問題