9

Firebaseに移行した後、Firebaseコンソールを使用して通知を送信することが正常に動作しましたが、特定の時刻に毎日通知が必要なため、firebaseコンソールを使用する代わりに以前のcronジョブを使用して通知を毎日送信します。 https://android.googleapis.com/gcm/sendhttps://fcm.googleapis.com/fcm/sendに変更しましたが、私のデバイスは通知を受け取りません。サーバー側でfirebaseクラウドメッセージングを実装する方法は?

これを解決する方法はありますか?それとも、私は何かが欠けてしまった? GCMをまだ使用しているデバイスでは、私のcronの仕事はうまくいきます。ここで

は私のコードは別に、以下のURLを変更することから

function sendNotificationFCM($apiKey, $registrationIDs, $messageText,$id) { 


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

$message = array(
     'registration_ids' => $registrationIDs, 
     'data' => array(
       "message" => $messageText, 
       "id" => $id, 
     ), 
); 


$ch = curl_init(); 

curl_setopt_array($ch, array(
     CURLOPT_URL => 'https://fcm.googleapis.com/fcm/send', 
     CURLOPT_HTTPHEADER => $headers, 
     CURLOPT_POST => true, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_POSTFIELDS => json_encode($message) 
)); 

$response = curl_exec($ch); 
curl_close($ch); 

return $response; 

}

+1

@McAwesomville私がhttpsで読んだからです:// firebase。 google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocolメッセージを送信するには、アプリケーションサーバーi POSTリクエストを送信します。例: 'https.fcm.googleapis.com/fcm/send' – natsumiyu

+0

@McAwesomvilleは何を使うのか分かりませんが、私はそれを試してみます。 – natsumiyu

+0

私は周りを見回してみましょう何か: –

答えて

9

私はnotificationオブジェクトを私のjsonに追加しました。 私はremoteMessage.getNotification().getBody()にnullが返ってきたので、それが私のcronによって通知を受け取らないのがわかりました。

編集

ここに私のJSONオブジェクト

$message = array(
      'registration_ids' => $registrationIDs, 
      'notification' => array(
            "title" => $id, 
            "body" => $messageText, 
            "icon" => "name_of_icon"), 
      'data' => array(
        "message" => $messageText, 
        "id" => $id, 
      ), 
    ); 
+0

動作している場合は、送信しているJSONオブジェクトを共有できますか? – Blacksad

+0

@Blacksad私のjsonオブジェクトを追加しました – natsumiyu

+0

@moriありがとうございましたton –

3

です:

https://fcm.googleapis.com/fcm/send 

また、あなたは要求データを送信する方法を変更する必要があります。

Content-Type:application/json 
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA 

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", // "to" replaces "registration_ids" of gcm in fcm 
    "data" : { 
    ... 
    }, 
} 

Cおまけにthis complete guide

+0

は 'message_id'が必要ですか? – natsumiyu

+0

'HTTP'リクエストのみで作業している場合はいいえ、' XMPP'を使ってチャットの種類の機能を実装している場合はyesです。 – astuter

+0

「フィールドがJSON文字列でなければなりません:」というエラーメッセージが表示されます。「 – natsumiyu

関連する問題