一些Android版本的Firebase Messaging行为异常

时间:2018-10-03 09:56:21

标签: android firebase firebase-cloud-messaging android-notifications

当我在Android应用中使用Firebase Messaging时,我目前遇到一些奇怪的行为。如果模拟器来自重新启动,则不会触发通知。我发现我需要手动打开或关闭wifi或移动数据(反之亦然)。然后,所有排队的通知将连续显示。

我的Android应用程序或后端使用的Messaging API是否缺少针对FCM的某种设置?

谢谢!

更新

  1. 在Android KitKat,棒棒糖,棉花糖,牛轧糖,奥利奥和派上进行了测试

  2. 我能够进行一项工作,以编程方式禁用然后启用wifi或移动数据。下面是我的代码。

    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. 由于此替代方法,通过Wifi连接的仿真器中的所有FCM通知现在都可以使用。但是,只有在KitKat之前(除非您拥有扎根的手机),才以编程方式打开然后关闭移动数据。这就是为什么通过移动数据连接的所有Android版本(除Android Lollipop之外)仍然会出现我的问题。

0 个答案:

没有答案