【问题标题】:How do I open different activities when receiving notification from Firebase收到来自 Firebase 的通知时如何打开不同的活动
【发布时间】:2017-05-22 22:56:57
【问题描述】:

在我的应用程序中有不同的类别,主页(MainActivity)、cmets 活动和聊天活动等。 当我收到来自 cmets、Chat 或主页的通知时,它仍会打开主要活动。我想要的是,如果我收到关于聊天的通知,它应该打开聊天活动,如果关于 cmets,它应该打开 cmets 活动等等...... 请帮忙谢谢。

【问题讨论】:

    标签: android firebase push-notification


    【解决方案1】:

    在您的message notification data 中,添加属性click_action 和操作字符串的值。对于您要启动的活动,请更新您的清单以定义与该操作匹配的意图过滤器。

    例如,带有消息:

    {
      "to": "dhVgCGVkTSR:APA91b...mWsm3t3tl814l",
      "notification": {
        "title": "New FCM Message",
        "body": "Hello World!",
        "click_action": "com.example.FCM_NOTIFICATION"
      },
      "data": {
        "score": "123"
      }
    }
    

    像这样定义意图过滤器:

        <activity android:name=".MyFcmNotificationActivity">
            <intent-filter>
                <action android:name="com.example.FCM_NOTIFICATION" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    

    【讨论】:

    • 感谢这个工作,但有一个小问题,有很多 cmets 活动,因为有很多帖子我如何指向特定的评论活动?
    • 很难提供具体的建议。如果您想要评论任务的多个实例,您应该查看activity launch modes and tasks。这很复杂,但您应该能够找到满足您需求的设置。主题也是discussed a lot on SO
    【解决方案2】:

    您的问题的答案是PendingIntent。您需要在 FCM 有效负载中发送通知类型(聊天、cmets 等),然后在您的 onMessageReceived() 中处理通知、了解类型并使用所需的活动创建 PendingIntent。当用户点击通知时,android 会启动 PendingIntent 中指定的活动。请参阅此android documentation。我希望这会有所帮助。

    [更新] 我更喜欢Bob's answer,但我自己从未尝试过

    【讨论】:

      【解决方案3】:

      在您的 MainActivity onCreate() 中,您需要获取启动 Activity 的意图并从通知中检索数据。

          Bundle bundle = getIntent().getExtras();
          if (bundle != null && bundle.get("data")!=null) {
              //here can get notification message
              String datas = bundle.get("data").toString();
          }
      

      您可以在此处根据您从通知中收到的数据重定向用户。 https://firebase.google.com/docs/cloud-messaging/android/receive#backgrounded

      在后台应用中处理通知消息

      当您的应用处于后台时,Android 会发送通知 消息到系统托盘。用户点击通知会打开 默认应用启动器。

      这包括同时包含通知和数据负载的消息 (以及从通知控制台发送的所有消息)。在这些 在这种情况下,通知会发送到设备的系统托盘,并且 数据有效负载是在您的意图的附加内容中交付的 启动器活动。

      【讨论】:

      • 对不起,我还是不明白?
      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多