Android firebase 向用户段发送通知以保存数据
Android firebase send a notification to a user segment to save data
我正在尝试使用 Firebase 将数据发送到 android 应用。如果应用程序是 运行 背景,我可以发送数据并成功保存。但是如果应用程序被终止并且用户收到带有数据的通知,它不会保存数据。
我正在使用 FirebaseMessagingService.onMessageReceived
方法来捕获数据并将其保存在 SharedPreference
文件中。我也阅读了 firebase 云消息传递。但是我没有服务器,我只是在使用 firebase 控制台。
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body Verse: " + remoteMessage.getData().get("verse"));
}
//sendNotification(remoteMessage.getNotification().getBody());
SharedPreferences sharedPref = this.getSharedPreferences(getString(R.string.preference_file_key),
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
Log.d("FIREBASE NOTIF SERVICE", remoteMessage.getNotification().getTitle());
Log.d("FIREBASE NOTIF SERVICE", remoteMessage.getData().get("verse"));
editor.putString(getString(R.string.preference_verse_title_key), remoteMessage.getNotification().getTitle());
editor.putString(getString(R.string.preference_verse_content_key), remoteMessage.getData().get("verse"));
editor.commit();
}
Firebase 控制台目前只允许您发送通知消息。如果应用程序在后台,通知消息不会导致 FirebaseMessagingService.onMessageReceived 被调用。
如果您希望 FirebaseMessagingService.onMessageReceived 在应用程序处于前台和后台时都被调用,则必须使用数据消息。但是,此时您无法从 Firebase 控制台发送数据消息,您需要自己的服务器来执行此操作。
有关 message types 的更多信息,请参阅文档。
我正在尝试使用 Firebase 将数据发送到 android 应用。如果应用程序是 运行 背景,我可以发送数据并成功保存。但是如果应用程序被终止并且用户收到带有数据的通知,它不会保存数据。
我正在使用 FirebaseMessagingService.onMessageReceived
方法来捕获数据并将其保存在 SharedPreference
文件中。我也阅读了 firebase 云消息传递。但是我没有服务器,我只是在使用 firebase 控制台。
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body Verse: " + remoteMessage.getData().get("verse"));
}
//sendNotification(remoteMessage.getNotification().getBody());
SharedPreferences sharedPref = this.getSharedPreferences(getString(R.string.preference_file_key),
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
Log.d("FIREBASE NOTIF SERVICE", remoteMessage.getNotification().getTitle());
Log.d("FIREBASE NOTIF SERVICE", remoteMessage.getData().get("verse"));
editor.putString(getString(R.string.preference_verse_title_key), remoteMessage.getNotification().getTitle());
editor.putString(getString(R.string.preference_verse_content_key), remoteMessage.getData().get("verse"));
editor.commit();
}
Firebase 控制台目前只允许您发送通知消息。如果应用程序在后台,通知消息不会导致 FirebaseMessagingService.onMessageReceived 被调用。
如果您希望 FirebaseMessagingService.onMessageReceived 在应用程序处于前台和后台时都被调用,则必须使用数据消息。但是,此时您无法从 Firebase 控制台发送数据消息,您需要自己的服务器来执行此操作。
有关 message types 的更多信息,请参阅文档。