首页 > 解决方案 > Firebase - 请求权限为空

问题描述

我有一个带有 Firebase 通知的颤振应用程序。当应用程序运行时,firebase 会尝试获取令牌,如下所示。

    import 'dart:io';
    import 'package:firebase_messaging/firebase_messaging.dart';
    import 'package:pushtest/functions/alert_messages.dart';
    import 'package:shared_preferences/shared_preferences.dart';
    import 'package:pushtest/constant/constant.dart' as Constants;
    
    class PushNotifications {
      FirebaseMessaging firebaseMessaging;
    
      initNotifications() {
        firebaseMessaging.requestPermission(); // ERROR
        firebaseMessaging.getToken().then((token) async {
          SharedPreferences prefs = await SharedPreferences.getInstance();
          prefs.setString('firebaseToken', token);
        });
      }
    
      configuration(scaffold, location) {
        FirebaseMessaging.onMessage.listen((RemoteMessage message) {
          var noti;
          if (Platform.isIOS) {
            noti = message.data['message'];
          } else {
            noti = message.data['data']['message'];
          }
          if (location == 'navigation') {
            Messages.alert(scaffold.currentContext, noti);
          } else {
            Constants.message = noti;
          }
          return null;
        });
    
        FirebaseMessaging.onBackgroundMessage((message) {
          var noti;
          if (Platform.isIOS) {
            noti = message.data['message'];
          } else {
            noti = message.data['data']['message'];
          }
          if (location == 'navigation') {
            Messages.alert(scaffold.currentContext, noti);
          } else {
            Constants.message = noti;
          }
          return null;
        });
    
        FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
          var noti;
          if (Platform.isIOS) {
            noti = message.data['message'];
          } else {
            noti = message.data['data']['message'];
          }
          Constants.message = noti;
          return null;
        });
      }
    }

但是返回

在 null 上调用了方法“requestPermission”。接收方:null 尝试调用:requestPermission()

我使用 firebase_messaging 10.0。那么,这样做的正确方法是什么?

标签: firebaseflutterfirebase-cloud-messaging

解决方案


在 null 上调用了方法“requestPermission”。接收方:null 尝试调用:requestPermission()

这个错误意味着变量firebaseMessagingnull. 这是因为它只是被声明但没有分配给它的值,如下所示:

      FirebaseMessaging firebaseMessaging;

您可以将此行更新为:

      FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance;

推荐阅读