java - 如何处理fcm通知数据而不需要点击android中的通知弹出窗口

标签 java android firebase notifications localbroadcastmanager

我使用了LocalBroadcastManager并在onmessagerecieved()中通过它传递数据

  if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());

        Intent i=new Intent("com.taskty.tasktysupplierapp_FCM_MESSAGE");
        String orderid=remoteMessage.getData().get("orderid");
        String placeOfExecution=remoteMessage.getData().get("placeOfExecution");
        i.putExtra("orderid",orderid);
        i.putExtra("placeOfExecution",placeOfExecution);
        LocalBroadcastManager lbm=LocalBroadcastManager.getInstance(this);
        lbm.sendBroadcast(i);


        if (/* Check if data needs to be processed by long running job */ true) {
            // For long-running tasks (10 seconds or more) use Firebase Job Dispatcher.
            scheduleJob();
        } else {
            // Handle message within 10 seconds
            handleNow();
        }
    }

然后在启动器activity中将其调用为

private BroadcastReceiver mhandler=new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        String orderid = intent.getStringExtra("orderid");
        Toast.makeText(context, "order id is :"+orderid, Toast.LENGTH_SHORT).show();

    }
};

@Override
protected void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mhandler);
}

@Override
protected void onResume() {
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(mhandler,new IntentFilter("com.taskty.tasktysupplierapp_FCM_MESSAGE"));
}

并在setcontentview()之前在onCreate()中注册接收器

最佳答案

我通过覆盖以下方法找到了答案,它在所有情况下都有效,无论应用程序在后台还是前台,并且您可以从 Intent 获取数据

  @override
  onhandleIntetn(Intent intent){}

关于java - 如何处理fcm通知数据而不需要点击android中的通知弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47159789/

相关文章:

java - Java 中的范围简化

javafx - 当选择一个时 TableView 中的复选框,行中的其他复选框被禁用

android - 为什么 Android BluetoothDevice.conenctGatt 在不使用时需要上下文

android - 在 Android 中显示 FAB 上方的 snackbar

android - 多个开发者的谷歌登录配置文件

java - eclipse : applet browser debugging: failed to connect to remote VM. 连接被拒绝

java - 如何在JSF页面中显示ArrayList

java - 每个 API 的 Firestore 导入/导出

javascript - Firebase + Node.js : Error: The XMLHttpRequest compatibility library was not found

firebase - 如何从 Firebase 项目中删除自己