我正在編寫自己的消息提供程序,以便在iOS和Android上發送推送通知。我有供應商在iOS上運行良好。我的問題是Android。在應用程序未運行時,手機會收到消息並通知用戶有消息。我只看到消息中的圖標。郵件正文不顯示。如果應用程序正在運行,應用程序將獲取消息事件,並且我可以在JSON中看到消息正文和消息標題。所以看來信息正在通過。我已經在運行JellyBean和Marshmallow的Android上嘗試了這一點,並獲得了相同的結果。我也嘗試使用谷歌測試通知從他們的網站FCM。我通過網絡通知發送獲得了相同的結果。有任何想法嗎?Android通知不顯示消息正文
這裏是我使用德爾福代碼:我發現我的問題
HttpClient.Request.URL := 'https://fcm.googleapis.com/fcm/send';
HttpClient.Request.ContentType := 'application/json';
HttpClient.Request.CustomHeaders.Add('Authorization: key = ***'); // Server Key from Google
HttpClient.Request.CharSet := 'utf-8';
JSONMsg := TJSONObject.Create;
JSONMsg.AddPair('to', devicetoken);
JSONInfo := TJSONObject.Create;
JSONInfo.AddPair('body', edtMessage.Text);
JSONInfo.AddPair('title', 'CODY Mobility');
JSONInfo.AddPair('priority', 'high');
JSONTrue := TJsonTrue.Create;
JSONFalse := TJsonFalse.Create;
JSONInfo.AddPair('content_available', JSONTrue);
JSONInfo.AddPair('dry_run', JSONFalse);
JSONToSend := TStringStream.Create(JSONMsg.ToString, TEncoding.UTF8);
StatusMemo.Lines.Add('Sending Android message to device: ' + deviceToken);
try
HttpClient.Post('https://fcm.googleapis.com/fcm/send', JSONToSend);
except
on E:Exception do begin
StatusMemo.Lines.Add('Message send failed: ' + E.Message);
end;
end;
StatusMemo.Lines.Add('Android message response: ' + HttpClient.ResponseText);
FreeAndNil(JSONTrue);
FreeAndNil(JSONFalse);
您是否嘗試過發送['data'](https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages) - 僅*信息有效載荷爲Android?有了這個,它肯定你的應用程序應該是處理通知的應用程序,而不是系統托盤。 –
是的,我確實嘗試發送一個數據只有有效載荷,但這並沒有解決我的問題。我希望能夠在應用程序未運行時向手機發送消息並顯示消息。當應用程序運行時,應用程序獲取有效載荷,數據或通知中的所有信息,應用程序可以毫無問題地顯示這些信息。 –
嗨,喬。所以你的意思是說,你的應用程序能夠在前臺和後臺接收消息,並且即使你的應用程序已關閉或被終止,你也只想接收消息。是對的嗎? –