首页 > 解决方案 > 某些 Android 版本的 Firebase 消息传递奇怪行为

问题描述

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

在我的 Android 应用程序或我在后端使用的消息传递 API 中,我是否缺少某种 FCM 设置?

提前致谢!

更新:

  1. 在 Android KitKat、Lollipop、Marshmallow、Nougat、Oreo 和 Pie 上测试

  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 除外)的原因。

标签: androidfirebasefirebase-cloud-messagingandroid-notifications

解决方案


推荐阅读