【问题标题】:Flutter firebase messaging not work on androidFlutter firebase消息在android上不起作用
【发布时间】:2021-01-23 10:31:28
【问题描述】:

我尝试做示例颤振应用程序从 firebase 获取通知。我已经完成了各种指南中建议的一切。但我遇到了麻烦,在 ios 中代码运行良好,而在 android 上却没有,我无法解释原因。似乎当_firebaseMessaging.getToken () 被执行时,它无处可去,等待一个永远不会到来的响应。你们有些人有什么建议吗?我尝试了_firebaseMessaging 提供的所有功能,但没有成功。

  import 'package:firebase_messaging/firebase_messaging.dart';
  import 'package:flutter/material.dart';
  import 'dart:io' show Platform;
  import 'package:flutter/foundation.dart';

  class PushMessagingExample extends StatefulWidget {
    @override
    _PushMessagingExampleState createState() => _PushMessagingExampleState();
  }

  class _PushMessagingExampleState extends State<PushMessagingExample> {
    String _homeScreenText = "Waiting for token...";
    String _messageText = "Waiting for message...";
    final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

    @override
    void initState() {
      debugPrint('test firebase');

      super.initState();
      _firebaseMessaging.configure(
        onMessage: (Map<String, dynamic> message) async {
          setState(() {
            _messageText = "Push Messaging message: $message";
          });
          print("onMessage: $message");
        },
        onLaunch: (Map<String, dynamic> message) async {
          setState(() {
            _messageText = "Push Messaging message: $message";
          });
          print("onLaunch: $message");
        },
        onResume: (Map<String, dynamic> message) async {
          setState(() {
            _messageText = "Push Messaging message: $message";
          });
          print("onResume: $message");
        },
      );



      _firebaseMessaging.requestNotificationPermissions(
          const IosNotificationSettings(sound: true, badge: true, alert: true));
      _firebaseMessaging.onIosSettingsRegistered
          .listen((IosNotificationSettings settings) {
        print("Settings registered: $settings");
      });

        _firebaseMessaging.subscribeToTopic('all');

      debugPrint('token call');
      _firebaseMessaging.getToken().then((String token) {
        debugPrint('test firebase token: $token');
        print(token);
        assert(token != null);
        setState(() {
          _homeScreenText = "Push Messaging token: $token";
        });
        print(_homeScreenText);
      });
    }

    @override
    Widget build(BuildContext context) {
      return Scaffold(
          appBar: AppBar(
            title: const Text('Push Messaging Demo'),
          ),
          body: Material(
            child: Column(
              children: <Widget>[
                Center(
                  child: Text(_homeScreenText),
                ),
                Row(children: <Widget>[
                  Expanded(
                    child: Text(_messageText),
                  ),
                ])
              ],
            ),
          ));
    }
  }

  void main() {
    runApp(
      MaterialApp(
        home: PushMessagingExample(),
      ),
    );
  }

【问题讨论】:

  • 尝试将onError 回调附加到getToken()
  • 您好,感谢您的回答,我发现该调用没有错误,只有调试消息是:/flutter (7524): test firebase I/flutter (7524): android push I/flutter (7524 ):令牌调用 E/MethodChannel#plugins.flutter.io/firebase_messaging(7524):无法处理方法调用 E/MethodChannel#plugins.flutter.io/firebase_messaging(7524):java.lang.IllegalStateException:默认 FirebaseApp 未初始化在这个过程中com.denisg.googlepushtest。确保首先调用 FirebaseApp.initializeApp(Context)。
  • 我尝试了 cahtcherror。实际上我得到的错误是:PlatformException(错误,默认 FirebaseApp 未在此过程 com.denisg.googlepushtest 中初始化。确保首先调用 FirebaseApp.initializeApp(上下文)。,Null,java.lang.IllegalStateException:默认FirebaseApp在com.denisg .googlepushtest这个过程中没有初始化,一定要先调用FirebaseApp.initializeApp(Context),看不懂,用ios不用初始化任何东西,FirebaseMessaging有初始化方法_firebaseMessaging = FirebaseMessaging(); ? 还是没有?
  • 首先,抱歉,回调确实称为catchError。您必须通过调用Firebase.initializeApp(); 来初始化应用程序。注意:它是可等待的。
  • 感谢您的帮助!我按照您的建议初始化了firebase,但它返回此错误:E / flutter (16938): [ERROR: flutter / lib / ui / ui_dart_state.cc (177)] 未处理的异常:[core / not-initialized] Firebase has not been正确初始化。您是否将“google-services.json”文件添加到项目中? google-services.json 文件存在于 android/app 文件夹中。在你看来我是不是忘记了什么?

标签: android flutter firebase-cloud-messaging


【解决方案1】:

我认为您的问题是异步方法,首先将它们分为Future方法和创建不同FirebaseMessaging实例的方法。

【讨论】:

  • 感谢您的回复,您为什么这么认为?在 ios 工作中,问题看起来像是关于 google-services.json 或为 android 正确初始化 firebase 的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 2022-08-19
相关资源
最近更新 更多