Firebase Messaging странное поведение для некоторой версии Android - PullRequest
0 голосов
/ 03 октября 2018

В настоящее время я наблюдаю странное поведение Firebase Messaging при использовании в моем приложении для Android.Уведомления не запускаются, если эмулятор пришел из перезапуска.Я понял, что мне нужно вручную включить или выключить Wi-Fi или мобильные данные (или наоборот).Затем после этого все уведомления в очереди будут отображаться последовательно.

Есть ли какая-то настройка, которую мне не хватает для FCM в моем приложении для Android или в API обмена сообщениями, который я использую в серверной части?

Заранее спасибо!

Обновление:

  1. Проверено на Android KitKat, Lollipop, Marshmallow, Nougat, Oreo и Pie

  2. Мне удалось применить обходной путь, который заключается в программном отключении, а затем включении Wi-Fi или мобильных данных.Ниже приведен мой код.

    boolean wifi = false;
    

    ConnectivityManager conMan = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

    if(conMan != null) {
    
        Log.e(TAG, "NETWORK INFO IS NULL: " + (conMan.getActiveNetworkInfo() == null));
        NetworkInfo netInfo = conMan.getActiveNetworkInfo();
    
        if(netInfo != null) {
    
            wifi = netInfo.getType() == ConnectivityManager.TYPE_WIFI;
    
        }
    
    }
    
    final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    
    if(wifi) {
    
        wifiManager.setWifiEnabled(false);
    
    } else {
    
        try {
            setMobileDataEnabled(SplashScreen.this, false);
        } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException | NoSuchFieldException e) {
            e.printStackTrace();
        }
    }
    
    final boolean finalWifi = wifi;
    
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
    
            if(finalWifi) {
    
                wifiManager.setWifiEnabled(true);
    
            } else {
    
                try {
                    setMobileDataEnabled(SplashScreen.this, true);
                } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException | NoSuchFieldException e) {
                    e.printStackTrace();
                }
    
            }}}, 200);
    
  3. Из-за этого обходного пути все уведомления FCM в эмуляторах, подключенных через Wi-Fi, теперь работают.Однако программное включение и отключение мобильных данных поддерживается только до тех пор, пока KitKat (если у вас нет рутованного телефона), поэтому моя проблема по-прежнему возникает для всех версий Android, подключенных через мобильные данные, кроме Android Lollipop.

...