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

时间:2018-10-31 11:56:15

标签: android firebase broadcastreceiver firebase-cloud-messaging

我需要从android中的FCM通知中获取数据并将其存储在本地,但是问题是我只能在app处于前台然后调用onMessageRecieved或用户点击通知时才能这样做。我想在用户收到通知并且应用未运行时(即使在后台或前台)也要获取通知的数据。请提出一些建议。预先谢谢你。

2 个答案:

答案 0 :(得分:1)

您可以使用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>

答案 1 :(得分:0)

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

有关更多信息,请参考this