我正在使用 Firebase 并测试在应用程序处于后台时从我的服务器向我的应用程序发送通知。通知发送成功,它甚至出现在设备的通知中心,但是当通知出现或者即使我点击它,我的 FCMessagingService 中的 onMessageReceived 方法也永远不会被调用。
当我在我的应用程序处于前台时对此进行测试时,调用了 onMessageReceived 方法并且一切正常。当应用程序在后台运行时会出现问题。
这是预期的行为,还是有办法解决这个问题?
这是我的 FBMessagingService:
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class FBMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.i("PVL", "MESSAGE RECEIVED!!");
if (remoteMessage.getNotification().getBody() != null) {
Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getNotification().getBody());
} else {
Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getData().get("message"));
}
}
}
原文由 Cyogenos 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是按预期工作的,只有当您的应用程序处于前台时,通知消息才会传递到您的 onMessageReceived 回调。如果您的应用程序在后台或已关闭,则通知中心会显示一条通知消息,并且 该消息中的任何数据都会传递给由于用户点击通知而启动的意图。
您可以在 JSON 中指定
click_action
以指示用户点击通知时应启动的意图。如果未指定 click_action,则使用主要活动。当意图启动时,您可以使用
检索一个集合,该集合将包括与通知消息一起发送的任何数据。
有关通知消息的更多信息,请参阅 文档。