当前位置: 首页 > 知识库问答 >
问题:

当应用程序在后台关闭时,设备未收到FCM推送通知-颤振Android

蒲昊
2023-03-14

我面临Firebase云消息传递(FCM)的问题。我的问题是:当应用程序在最近的选项卡中关闭时,设备没有收到FCM推送通知。当应用程序处于前台或后台时,它可以正常工作。但是,当我从后台关闭它时,我在通知栏中没有收到任何通知。

我看了很多帖子,尝试了很多解决方案,但在我的情况下没有任何效果:(

我尝试过的步骤:

  1. 我在依赖项中添加了fcm
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 29

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.myapplication.id"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation platform('com.google.firebase:firebase-bom:26.5.0')
    implementation 'com.google.firebase:firebase-analytics'
    implementation "androidx.browser:browser:1.3.0"
    implementation 'com.google.firebase:firebase-messaging:21.0.1'
}

2.我已经在我的项目/build.gradle中添加了谷歌服务依赖关系

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.google.gms:google-services:4.3.5'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}
<application
        android:label="partner_location_project"
        android:icon="@mipmap/ic_launcher">

        <activity
            android:exported="true"
            android:enabled="true"
            android:name=".MainActivity"
   ....
   ....
   ....
<intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="FLUTTER_NOTIFICATION_CLICK" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

这是我申报FCM的dart文件

class _CheckAuthState extends State<CheckAuth> {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  void fcm_listener() async {
    try {
      var token = await _firebaseMessaging.getToken();
      print("fcm token = $token");
      _firebaseMessaging.configure(
        onLaunch: (Map<String, dynamic> message) async {
          print("onLaunch $message");
        },
        onMessage: (Map<String, dynamic> message) async {
          print("onMessage $message");
        },
        onResume: (Map<String, dynamic> message) async {
          print("onResume $message");
        },
      );
    } catch (e) {
      print("fcm exception");
      print(e.toString());
    }
  }
void initState() {
    // TODO: implement initState
    super.initState();
    fcm_listener();
  }

我正在真实设备(Realme6Pro)上测试它。(我正在使用firebase_邮件:^9.0.0)欢迎您提出任何意见!!

共有1个答案

王子明
2023-03-14

检查这个工作示例:Flutter_Firebase_Notification

示例代码

Future<void> myBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  return MyAppState()._showNotification(message);
}

Future<void> main() async {
  await WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  FirebaseMessaging.onBackgroundMessage(myBackgroundHandler);
  runApp(MaterialApp(home: MyApp()));
}

完整代码

 类似资料:
  • 我目前正在开发Android(Cordova)应用程序,我正在使用Oneignal推送通知。首先,如果我关闭应用程序,推送通知不会被传递,所以我不得不添加一个Cordova插件来保持我的应用程序在后台运行: 我在deviceready之后的代码: 谢了。

  • 当应用程序在前台时不接收推送通知,但当应用程序在后台时接收我已遵循来自https://medium . com/@ ankushaggarwal/GCM-setup-for-Android-push-notifications-656 cf DD 8 adbd的FCM教程

  • 我的应用程序有推送通知(FCM)。当应用程序在前台运行时,我可以在onMessageReceived()函数中获取数据负载。当应用程序在后台运行或应用程序完全关闭时,不会调用onMessageReceived()函数。我的问题是,当app在后台或关闭时,是否可能获得数据有效载荷? 提前道谢!

  • 我使用firebase_消息和Flatter_local_通知包,目前我可以在应用程序处于后台时,在用户点击通知时获取通知数据。当应用程序位于前台时,我如何收听点击事件。

  • 我想为一个聊天应用程序实现FCM推送通知服务,我遵循Firebase文档中的步骤,当通知从Firebase控制台发送到我的设备时,我会得到通知。当我尝试使用http post to https://FCM.googleapis.com/FCM/send通过FCM将通知通过服务器端发送到设备时: 当应用程序处于活动状态并且我正在将此通知发送到我的设备时,Im在我的控制台日志中收到以下消息,所以我认为

  • 我想用Xamarin格式的C#创建一个基于文本的Android游戏。 在故事中,我想设置角色任务,这需要一些时间,例如“我去挖这个洞,完成后给你打电话。” 如何将通知设置为在设置的时间之后显示?例如,上述声明可能需要10分钟,然后用户收到继续游戏的通知? 我一周前才开始做C#,所以如果这是noobish,或者已经被问到了,我道歉。我到处都找过,但有几种类型的通知,当我试图理解它时,似乎我在读法语。