【发布时间】: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