后台通知在发布模式下不起作用 - _firebaseMessagingBackgroundHandler 正在被触发

问题描述 投票:0回答:1

这仅适用于 Flutter 和 Android,因为目前我只专注于 Android。

我使用 firebase_core 和 firebase_messaging 包来通过 Firebase 设置和触发推送通知。 当我处于调试模式时,我可以在后台和前台很好地触发通知。 当我处于发布模式时,通知仅在前台触发。在后台时,根本不显示推送通知。但是,_firebaseMessagingBackgroundHandler 在调试和发布模式下都会被触发!

我还没有找到任何人遇到我的问题,所以这一定是我缺少的一些配置。只是不知道那是什么。

这是我的 main.dart 文件:

@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  print('Handling a background message: ${message.messageId}');
}


void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  final settingsController = SettingsController(SettingsService());
  await settingsController.loadSettings();

  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);


  // Run the app and pass in the SettingsController. The app listens to the
  // SettingsController for changes, then passes it further down to the
  // SettingsView.
  runApp(MyAppWrapper(settingsController: settingsController));
}


// MyAppWrapper to handle MessagingWidget
class MyAppWrapper extends StatelessWidget {
  final SettingsController settingsController;

  const MyAppWrapper({Key? key, required this.settingsController}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MyApp(settingsController: settingsController);
  }
}

有人可以帮助我吗?

我尝试在

@pragma('vm:entry-point')
之前添加
_firebaseMessagingBackgroundHandler
。虽然它解决了与后台通知相关的错误,但它并没有解决我在发布模式下在后台接收推送通知的需要。

flutter clean
flutter pub get

也尝试过。

flutter firebase push-notification
1个回答
0
投票

问题出在 ProGuard - 即使我没有在应用程序文件夹内的 build.gradle 文件中将 minifyEnabled 或收缩资源启用为 true,Android 默认情况下将这两个配置启用为 true。

将shrinkResources设置为false解决了这个问题。

如果您想将其保持为 true,您可以创建一个名为 proguard-rules.pro 的文件并将其放入其中: -keep 类 android.graphics.drawable.Icon { *; }

您可以在线搜索更多与 ProGuard 问题相关的内容:)

© www.soinside.com 2019 - 2024. All rights reserved.