当前位置: 首页 > 知识库问答 >
问题:

处理当前活动的Android推送通知

赖渊
2023-03-14

我已经实现了Android推送通知,我可以在应用程序运行时使用此方法扩展Firebase MessagingService来处理它:

@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
   ...
}

但我真正需要的是在我当前的活动中获取通知数据,以更新一些字段,以便用户实时查看。但我找不到一个方法来做到这一点。有人能帮帮我吗?

共有2个答案

佘辰龙
2023-03-14

请查看文档:

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

    // Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());
        updateData(remoteMessage.getData());

    }

}



public void updateData(Map<String, String> data){
        // update your data here
        //ex: editText1.setText("text");
    }
胡国兴
2023-03-14

创建本地广播接收器
当您在FirebaseMessagingService收到通知时,您将使用LocalBroadcastReceiver将数据发送到所需的活动。这既简单又安全。

在FirebaseMessagingService上

@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);

//Take the data from message received
String myData = remoteMessage.get("MyDataKey");

//Send data through a local broadcast receiver
Intent intent = new Intent("IntentFilterAction");
intent.putExtra("MyDataKey", myData);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

关于活动onCreate

//Create BroadcastReceiver
BroadcastReceiver broadcastReceiver = new BroadcastReceiver(){
      @Override
      public void onReceive(Context context, Intent intent) {
          super.onReceive(context, intent);

          //Get data from intent
          String mydata = intent.getExtras
      }
};

IntentFilter intentFilter = new IntentFilter("IntentFilterAction");
LocalBroadcastManager.getInstance(getContext()).registerReceiver(broadcastReceiver, intentFilter);

活动onDestroy

//Unregister BroadcastReceiver
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(broadcastReceiver);

希望有帮助:)

 类似资料:
  • iOS消息推送在工作灯,接收通知时,应用程序在后台作为徽章,但当我点击徽章也我得到有效载荷作为警报。我只需要徽章时,应用程序在后台运行。 实际上,我需要在应用程序位于前台时显示警报,如果应用程序位于后台,则显示徽章。在我的push received handler函数中,我正在检查这一点。但在ios中,只有当用户点击badge时,处理器函数get才会触发,而在Android中,当push收到时,处

  • 使用Appium(用于windows上的android),我需要检查登录场景,输入用户和密码后,点击登录按钮,新(等待)活动打开,1。请指导我如何获得当前活动,即在按下登录按钮之前。2.按下登录按钮后,如何导航到等待活动,以便检查登录是否成功。

  • 4.1 推送活动 新建活动 ①基本设置: 活动名称:自定义名称; 平台:可选择Mobile或PC/Pad; 推送形式:可选择通栏或弹窗; 内容:推送中所显示的文字内容; 按钮:开关按钮可显示或隐藏通栏中的按钮; 按钮链接:点击通栏推送后所跳转的目标页面网址; ②推送规则: 触发条件:点击➕添加触发条件按钮展开触发推送条件,如广告项目、事件名称、浏览页数、用户类型等;最多可添加10个条件。 推送地区

  • 4.1 推送活动 新建活动 活动名称:自定义名称; ①推送人群: 选择人群:可选择可以选择某一人群作为分析对象 回溯周期:最近3个月,含今日; ②活动创意: 图片素材:推送活动中所需上传的图片; 跳转链接:点击通栏推送后所跳转的目标页面网址; ③推送计划: 每个设备接收次数:推送后每个用户设备收到活动的次数; 推送时间段:可设置推送活动的时间范围; 效果分析 ① 基础指标 总展示次数:推送成功展示

  • 我正在尝试用远程通知处理所有可能的情况。当调用Foreground-DidReceiverEmoteNotification中的app时我就ok了。问题是当应用程序处于后台状态时,我收到推送通知。什么都不叫。如何让用户知道他有新的远程通知当应用程序回到前台?

  • 当app不再活动(即使是最近的任务)时,如何从FCM接收推送通知。我看到gmail、whatsapp都有这个功能。我正在使用FCM进行推送通知。我使用了WakefulBroadcast接收器来唤醒设备。我怎么用这个? 服务类别: