2016-11-21 56 views
0

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

简而言之,我发现当推送到达时,更新活动的组件(背景),当打开应用程序时应该更新而无需按下推送通知;也就是说,推送通知只会提供信息,但用户不会推送推送通知,但它会打开应用程序,并在其中重新执行与按下推送时相同的操作。

感谢和问候。

回答

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类设置首选项值。在这种情况下,当活动打开时,无论推送是否被单击,您都可以检查是否设置了首选项值,具体取决于您是否可以执行更新。

+0

但是,如果你卸载发生的应用程序? – FABiO

+0

有人可以帮我吗? – FABiO

+0

如果您卸载应用程序,则该应用程序的所有内容都将消失,包括首选项和每个其他应用程序相关数据。我不明白你的问题,卸载与你的推送通知或其他什么有关。 – saiful103a