如何在Android上分离FCM通知?

时间:2016-09-06 10:27:11

标签: android firebase firebase-cloud-messaging firebase-notifications

我有两个不同的通知。
一个是消息而另一个是其他通知。
我想分开通知。
例如,当我收到通知消息并点击它时,它会打开聊天室,而另一个会打开另一个活动。

2 个答案:

答案 0 :(得分:4)

以下是发送下游消息所需的一些基本属性。

- 类型字符串 - (可选)[邮件的收件人] 该值必须是单个注册令牌,通知密钥或主题。发送到多个主题时不要设置此字段

registration_ids - 类型字符串数组 - (可选)[消息的收件人] 多个注册令牌,最小1个最大1000个。

优先级 - 类型字符串 - (可选)[默认正常] 允许值正常和高。

delay_while_idle - 输入布尔值 - (可选)[默认值为false] true表示在设备变为活动状态之前不应发送消息。

time_to_live - 输入JSON号码 - (可选)[默认值4周最长4周] 此参数指定如果设备处于脱机状态,则应在FCM存储中保留消息的时间长度(以秒为单位)

数据 - 输入JSON对象 指定消息的有效内容的自定义键值对。 例如。 {“post_id”:“1234”,“post_title”:“博客帖子标题”}

在Android中,您可以在 onMessageReceived()中接收它作为地图数据......

public class FcmMessageService extends FirebaseMessagingService{
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        //onMessageReceived will be called when ever you receive new message from server.. (app in background and foreground )
        Log.d("FCM", "From: " + remoteMessage.getFrom());

        if(remoteMessage.getNotification()!=null){
        Log.d("FCM", "Notification Message Body: " + remoteMessage.getNotification().getBody());
        }

        if(remoteMessage.getData().containsKey("post_id") && remoteMessage.getData().containsKey("post_title")){
            Log.d("Post ID",remoteMessage.getData().get("post_id").toString());
            Log.d("Post Title",remoteMessage.getData().get("post_title").toString());
            // eg. Server Send Structure data:{"post_id":"12345","post_title":"A Blog Post"}
        }
    }
}

答案 1 :(得分:0)

为此,您应该使用click_action字段,该字段允许您指定用户点按通知时要启动的活动。

所以在你的通知有效载荷中:

click_action: "<intent to launch>"

如果未定义,则click_action默认为启动器Intent / Activity。