我正在尝试通过FCM服务发送推送通知。在我的主活动中,我编写了以下代码:
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// checking for type intent filter
if (intent.getAction().equals(Config.REGISTRATION_COMPLETE)) {
// gcm successfully registered
// now subscribe to `global` topic to receive app wide notifications
FirebaseMessaging.getInstance().subscribeToTopic(Config.TOPIC_GLOBAL);
displayFirebaseRegId();
} else if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) {
// new push notification is received
String message = intent.getStringExtra("message");
Toast.makeText(getApplicationContext(), "Push notification: " + message, Toast.LENGTH_LONG).show();
}
}
};
为了订阅用户的主题。
从后端,我通过此链接调用FCM服务:https://fcm.googleapis.com/fcm/send
我在其中传递此 JSON:
{
"to":"/topics/global",
"data":{
"title":"test",
"is_background":false,
"message":"testmessage",
"image":"",
"payload":{
"team":"Test",
"score":"5.6"
},
"timestamp":"2017-05-23 11:55:35"
}
}
我得到这个回应:
{"message_id":8863205901902209389}
但是我的设备没有显示任何通知,如果我使用带有"用户细分"或"单个设备"的Firebase控制台。同样在Firebase控制台中,"主题"方式不起作用。
提前感谢您的任何回复。
有两种类型的 FCM 消息。
- 通知消息
- 数据消息
在客户端,通知消息由 FCM 处理并自动显示在通知窗口中。如果您使用的是数据消息,则您的应用需要处理收到的消息并创建通知。
问题中的示例有效负载是一条数据消息,因此它不会显示在通知中(我假设您没有进行任何处理(。通过 FCM 控制台发送的通知始终是通知消息,因此会自动显示这些消息。
有关此内容的更多详细信息,请参阅此 FCM 页面。