Получение сообщений андроидом от firebase

144
07 января 2019, 14:40

Есть десяток андроидов, все подписаны на topic firebase. Сообщения не содержат заголовка (notification) только date и не много.

Когда приложение убираешь из памяти - сообщения не доходят, но только до некоторых телефонов. Системы никакой, разные производители и версии 6,7,8.

Например Huawei на андроид 8 ловит, а на 6 - нет.

Sony на 6 ловит, Samsung на 8 - нет.

ловлю и через onMessageReceived() и через onReceive(), и по переменке и одновременно.

Но как только запускаешь приложение сразу все прилетает.

Чего не учел?

Вот основной код:

public class FirebaseDataReceiver extends WakefulBroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        Public.toLog(" Получил ... onReceive");
  }
}

public class GetFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
            Public.toLog(" Получил ... onMessageReceived");
      }
    }

В манифесте:

    <service android:name=".Message.MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>
    <service android:name=".Message.GetFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <receiver
        android:name=".Message.FirebaseDataReceiver"
        android:exported="true"
        android:enabled="true"
        android:directBootAware="true"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
Answer 1

В целом вопрос сводиться к запуску приложения в фоновом режиме. Если системой разрешен такой запуск приложения, то работает, если нет - нет. У некоторых моделей после установки по умолчанию такой режим отключен, включаешь его руками работает, как его включить программно не понятно. тут понимается этот вопрос

READ ALSO
Покрыть тестом значение в методе

Покрыть тестом значение в методе

Есть класс в котором есть методВ методе инициализируется переменная String, ей присваивается ссылка

168
что такое Proxy Object?

что такое Proxy Object?

что такое proxy object в Hibernate?

266
Архитектура настольного приложения

Архитектура настольного приложения

Как можно создавать большое настольное приложение, чтобы не было большой зависимости между модулями, не приходилось делать сборку всего...

147