后台处理FCM Android上的推送通知

时间:2016-11-21 18:09:56

标签: android firebase firebase-cloud-messaging

我遇到了问题,我真的了解推送通知及其使用的功能;但是,我有这种情况,当推送通知到达并且我点击它完美时,我更新活动,我的问题是推送通知到达并且用户没有推送推送通知但是直接打开应用程序;发生这种情况时,活动不会更新。有没有嵌入或实验的方法只是推动后台活动更新其功能,就像点击推送一样?

简而言之,我所寻找的是当推送到达时,更新活动的组件(背景),打开时应该更新应用程序而无需按下推送通知;也就是说,推送通知只会提供信息,但是用户不会推送推送通知,但是它会打开应用程序,并且在其中将重新处理动作,如果它按下按钮那样。

谢谢和问候。

1 个答案:

答案 0 :(得分:0)

推送到达时,会从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类设置首选项值。在这种情况下,当活动打开时,您可以根据是否可以进行更新来检查是否设置了首选项值,无论是否单击了推送。

相关问题