Flutter Firebase 无法理解堆栈跟踪

50_*_*ing 5 dart firebase flutter firebase-cloud-messaging

我无法理解这个堆栈跟踪及其出现的原因。据我所知,这与 firebase 消息传递有关。

E/AndroidRuntime(26033): java.lang.AssertionError
E/AndroidRuntime(26033):    at io.flutter.plugins.firebase.messaging.FlutterFirebasePermissionManager.onRequestPermissionsResult(FlutterFirebasePermissionManager.java:33)
E/AndroidRuntime(26033):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:777)
E/AndroidRuntime(26033):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:409)
E/AndroidRuntime(26033):    at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onRequestPermissionsResult(FlutterActivityAndFragmentDelegate.java:752)
E/AndroidRuntime(26033):    at io.flutter.embedding.android.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:748)
E/AndroidRuntime(26033):    at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8421)
E/AndroidRuntime(26033):    at android.app.Activity.dispatchActivityResult(Activity.java:8266)
E/AndroidRuntime(26033):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4931)
E/AndroidRuntime(26033):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4979)
E/AndroidRuntime(26033):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
E/AndroidRuntime(26033):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime(26033):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime(26033):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
E/AndroidRuntime(26033):    at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(26033):    at android.os.Looper.loop(Looper.java:223)
E/AndroidRuntime(26033):    at android.app.ActivityThread.main(ActivityThread.java:7562)
E/AndroidRuntime(26033):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(26033):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AndroidRuntime(26033):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
I/Process (26033): Sending signal. PID: 26033 SIG: 9
Lost connection to device.

Run Code Online (Sandbox Code Playgroud)

但根据文档,我处理 firebase 和通知权限的预配置是正确的。

这就是我的主要样子,

E/AndroidRuntime(26033): java.lang.AssertionError
E/AndroidRuntime(26033):    at io.flutter.plugins.firebase.messaging.FlutterFirebasePermissionManager.onRequestPermissionsResult(FlutterFirebasePermissionManager.java:33)
E/AndroidRuntime(26033):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:777)
E/AndroidRuntime(26033):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:409)
E/AndroidRuntime(26033):    at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onRequestPermissionsResult(FlutterActivityAndFragmentDelegate.java:752)
E/AndroidRuntime(26033):    at io.flutter.embedding.android.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:748)
E/AndroidRuntime(26033):    at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8421)
E/AndroidRuntime(26033):    at android.app.Activity.dispatchActivityResult(Activity.java:8266)
E/AndroidRuntime(26033):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4931)
E/AndroidRuntime(26033):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4979)
E/AndroidRuntime(26033):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
E/AndroidRuntime(26033):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime(26033):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime(26033):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
E/AndroidRuntime(26033):    at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(26033):    at android.os.Looper.loop(Looper.java:223)
E/AndroidRuntime(26033):    at android.app.ActivityThread.main(ActivityThread.java:7562)
E/AndroidRuntime(26033):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(26033):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AndroidRuntime(26033):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
I/Process (26033): Sending signal. PID: 26033 SIG: 9
Lost connection to device.

Run Code Online (Sandbox Code Playgroud)

下面我正在策略屏幕中处理权限,

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  FirebaseMessaging messaging = FirebaseMessaging.instance;

  NotificationSettings settings = await messaging.requestPermission(
    alert: true,
    announcement: false,
    badge: true,
    carPlay: false,
    criticalAlert: false,
    provisional: false,
    sound: true,
  );

  print('User granted permission: ${settings.authorizationStatus}');


  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
      alert: true, badge: true, sound: true);

  DatabaseBinding().dependencies();

  runApp(MyApp());
}

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
}
Run Code Online (Sandbox Code Playgroud)

请让我知道堆栈跟踪到底说了什么,如果我遗漏了什么,请解释一下。

50_*_*ing 1

该问题似乎来自更新 13.0.0 - 内置通知权限处理功能

FlutterFire 问题#9430

请点击上面的链接了解更多详情