当推送到达时,将从FirebaseMessagingService类的onMessageReceived方法触发后台服务。尽管FirebaseMessagingService本身就是一个Service类,但在这种情况下,您可以使用FirebaseMessagingService类。在这种情况下,一旦完成后台任务,就会通过推送通知用户。
以下是有关如何使用FirebaseMessagingService类解决此问题的基本框架。
public class PushFirebaseMessagingService extends FirebaseMessagingService {
// Define the listener interface
interface BackgroundTaskCompletionListener<T> {
void requestComplete(T object);
}
@Override
public void onMessageReceived(final RemoteMessage remoteMessage) {
doBackgrundTask(new BackgroundTaskCompletionListener<Boolean>(){
@Override
public void requestComplete(Boolean object) {
}
});
notifyUser(remoteMessage);
}
public void doBackgrundTask(BackgroundTaskCompletionListener mBackgroundTaskCompletionListener){
boolean taskcomplete = false;
//do your task
if(mBackgroundTaskCompletionListener!=null){
mBackgroundTaskCompletionListener.requestComplete(taskcomplete);
}
}
public void notifyUser(RemoteMessage remoteMessage){
//your notification
}
}
尽管您可以快速解决您的问题的另一种方法是通过从FirebaseMessagingService类设置首选项值。在这种情况下,当活动打开时,无论推送是否被单击,您都可以检查是否设置了首选项值,具体取决于您是否可以执行更新。
但是,如果你卸载发生的应用程序? – FABiO
有人可以帮我吗? – FABiO
如果您卸载应用程序,则该应用程序的所有内容都将消失,包括首选项和每个其他应用程序相关数据。我不明白你的问题,卸载与你的推送通知或其他什么有关。 – saiful103a