2016-11-28 140 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如果你的使用情況需要

相關問題