2016-11-28 3 views
2

Я работаю над Android-приложением, которое использует PubNub Service в качестве третьей стороны для Push Notification, поскольку все вы знаете, что PubNub использует FCM при работе с Android.Получать оповещения Push PubNub, когда приложение убито

Я поставил слушатель для уведомления толчка от PubNub в классе Application:

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) { 

     } 
    }); 

Все работает отлично, если приложение или задний план, но проблема в том, когда приложение будет убито (прокатывается из запущенных задач) Я не могу получать push-уведомления от PubNub.

Как я могу решить эту проблему? Должен ли я помещать слушателя PubNub в другое место? или как я могу получить его через класс FirebaseMessagingService?

+0

Прием GCM (ТСМ) сообщения не имеет ничего общего с 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, который позволит сократить ваш интернет Connexion в определенном состоянии

Со всем, что в виду, вы можете рассмотреть возможность использования service, если ваш случай использования нужно его

Смежные вопросы