9

遷移到Firebase後,我測試了通過使用Firebase控制檯發送通知的工作正常,但我需要每天通知特定時間,以便不使用Firebase控制檯,而是使用我以前的cron作業每天發送通知。我將https://android.googleapis.com/gcm/send更改爲https://fcm.googleapis.com/fcm/send,但我的設備未收到任何通知。如何在服務器端實現firebase雲消息傳遞?

有什麼辦法解決這個問題嗎?或者我錯過了什麼?我的cron作業對於仍在使用GCM的設備工作正常。

這裏是我的代碼

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://開頭火力點。 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

我在我的json中添加了notification對象。 我發現在我的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感謝一噸 –

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'實現聊天類功能。 – astuter

+0

我有一個錯誤「字段」爲「必須是JSON字符串:」 – natsumiyu

相關問題