我正在使用 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"));
}
}
}
最佳答案
这是按预期工作的,只有当您的应用程序处于前台时,通知消息才会传递到您的 onMessageReceived 回调。如果您的应用处于后台或已关闭,则通知中心会显示一条通知消息,并且该消息中的任何数据都会传递到因用户点击而启动的 Intent 通知。
您可以在 JSON 中指定 click_action
来指示用户点击通知时应启动的 Intent 。如果未指定 click_action,则使用主要 Activity 。
Intent 启动后,您可以使用
getIntent().getExtras();
检索包含随通知消息一起发送的任何数据的 Set。
有关通知消息的更多信息,请参阅 docs .
关于android - 应用程序在后台时未调用 Firebase onMessageReceived,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37358462/