8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

当应用程序处于后台时,如何使用 FCM 消息触发 onMessageReceived?

Ashile The Great 1月前

22 0

我制作了一个接收 FCM 消息的 Android 应用程序,我想要以下行为:当应用程序完全关闭时:在系统托盘中接收通知。当应用程序启动但它在...

我制作了一个接收 FCM 消息的 Android 应用程序,我想要以下行为:

  • 当应用程序完全关闭时:在系统托盘中接收通知。
  • 当应用程序启动但它在后台时:在系统托盘中接收通知并触发服务, onMessageReceived 以便我可以在 UI 中记录消息。
  • 当应用程序启动并且位于前台时:仅触发服务, onMessageReceived 以便我可以记录消息。

到目前为止,我尝试发送如下组合 FCM 消息:

message = {
  'message': {
      'token': app_token,
      'android': {
          'priority': 'HIGH',
          'notification': {
              'title': msg_title,
              'body' : msg_body,
              'color': ColorTable[msg_level],
              'channel_id': ChannelTable[msg_level],
              'notification_priority': 'PRIORITY_HIGH'},
          'data': {
              'value1': 'dummy'}
      } 
  }}

在 onMessageReceived 中:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // Handle the received message here
    Log.d(TAG, "From: " + remoteMessage.getFrom());

    // Check if message contains a notification payload.
    RemoteMessage.Notification NotifMsg = remoteMessage.getNotification();
    if (NotifMsg != null) {
        String msg_text = NotifMsg.getBody();
        Log.d(TAG, "FCM Received: " + msg_text);
        String msg_time = GetNowDateTime();
        String CID = NotifMsg.getChannelId();
        byte colorID = 0;
        if (CID != null) {
            if (CID.equals(MainActivity.channelNormID)) { colorID = 1; }
             else if (CID.equals(MainActivity.channelWarnID)) { colorID = 2; }
             else if (CID.equals(MainActivity.channelCritID)) { colorID = 3; }
        }
        LogMessage(msg_text, msg_time, colorID);
    }
}

但是 onMessageReceived 当应用程序启动并处于后台时不会触发...有什么想法吗?

帖子版权声明 1、本帖标题:当应用程序处于后台时,如何使用 FCM 消息触发 onMessageReceived?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Ashile The Great在本站《firebase》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您需要 notification 从上面的 JSON 中删除该块,然后它就可以正常工作:

    message = {
      'message': {
          'token': app_token,
          'android': {
              'priority': 'HIGH',
              'data': {
                  'title': msg_title,
                  'body' : msg_body,
                  'color': ColorTable[msg_level],
                  'channel_id': ChannelTable[msg_level],
                  'notification_priority': 'PRIORITY_HIGH'}
          } 
      }}
    
返回
作者最近主题: