当应用程序不在任务中或被杀死时如何获取 FCM 通知数据?

How to get FCM notification data when app is not in task or killed?

我需要从 android 中的 FCM 通知中获取数据并将它们存储在本地,但问题是我只能在应用程序处于前台然后调用 onMessageRecieved 时执行此操作,或者当用户点击通知时。我想在用户收到通知且应用程序不 运行 时获取通知数据,即使在后台或前台也不行。请提出一些建议。提前谢谢你。

通过使用 FCM 控制台,您只能发送通知消息。通知消息可以在前台应用程序中由 onMessageReceived 方法处理,并在后台应用程序中传递到设备的系统托盘。用户点击通知,将打开默认的应用程序启动器。如果你想在每个应用程序状态下处理通知,你必须使用数据消息和 onMessageReceived 方法。

参考this了解更多信息。

您可以使用 BroadcastReceiver

public class FirebaseDataReceiver extends BroadcastReceiver {

    private final String TAG = "FirebaseDataReceiver";

    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Set<String> keys = intent.getExtras().keySet();

            for (String key : bundle.keySet()) {
                Object value = bundle.get(key);
                // You can use key and values here
            }
        }
    }
}

Manifest.xml

<application>

    ............

    <receiver
        android:name="PackageName.FirebaseDataReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </receiver>

    ............

</application>