2016-11-28 118 views
2

我正在使用PubNub服务作为推送通知的第三方的Android应用程序,因为您都知道PubNub在处理Android时使用FCM。当应用程序死亡时接收PubNub推送通知

我已经把听者的推送通知从PubNub在应用程序类:

pubnub.addListener(new SubscribeCallback() { 
     @Override 
     public void status(PubNub pubnub, PNStatus status) { 
      Log.d(TAG, "PubNub status: " + status.getStatusCode()); 
     } 

     @Override 
     public void message(PubNub pubnub, PNMessageResult message) { 
      Log.d("PubNub", "PubNub Channel Name: " + message.getChannel()); 
      Log.d("PubNub", "PubNub Message: getMessage " + message.getMessage().toString()); 

     } 

     @Override 
     public void presence(PubNub pubnub, PNPresenceEventResult presence) { 

     } 
    }); 

一切正常时,该应用程序是前景或背景,但问题是,当应用程序被杀死(刷卡来自正在运行的任务)我无法接收来自PubNub的任何推送通知。

我该如何解决这个问题?我应该把PubNub监听器放在别的地方吗?或者我怎样才能通过FirebaseMessagingService课程获得它?

+0

接收GCM(FCM)消息与PubNub无关。设备操作系统接收它们并将它们转发到您的应用程序。请参阅此链接https://developer.android.com/training/monitoring-device-state/doze-standby.html和此链接https://android-developers.googleblog.com/2015/10/how-google-cloud -messaging型手柄,doze.html –

回答

0

将事物放入Application类中并不能解决您的任何问题。

当您通过刷卡手动杀死应用程序时,Application类中的所有内容都将被明显销毁。没有办法让Pubnub继续获得更新。

Android也可以在随机时刻杀死你的应用程序,当它在后台时,你的Application类也被破坏,并且在其中执行业务逻辑绝对不是一个好主意。

最后,你必须处理Doze mode这将减少你的互联网联接在一定条件下

有了这些想法,你可以考虑使用service如果你的使用情况需要

相关问题