【发布时间】:2021-11-04 19:43:17
【问题描述】:
我已将 firebase 消息传递更新到最新版本并实施了新修改,但使用 firebase_messaging: ^8.0.0 及更高版本如果应用程序在背景。
这是代码
class PushNotificationService
{
final FirebaseMessaging messaging = FirebaseMessaging.instance;
Future initialize(context) async{
FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage message) => (Map<String, dynamic> message) async{
retrieveRideRequestInfo(getRideRequestId(message), context);
});
FirebaseMessaging.onMessage.listen((RemoteMessage message) => (Map<String, dynamic> message) async {
retrieveRideRequestInfo(getRideRequestId(message), context);
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) => (Map<String, dynamic> message) async{
retrieveRideRequestInfo(getRideRequestId(message), context);
});
}
Future<String> getToken() async{
String token = await messaging.getToken();
//String token = await firebaseMessaging.getToken();
print("This is token :: ");
print(token);
driversRef.child(currentfirebaseUser.uid).child("token").set(token);
messaging .subscribeToTopic("alldrivers");
messaging .subscribeToTopic("allusers");
}
String getRideRequestId(Map<String, dynamic> message){
String rideRequestId = "";
if(Platform.isAndroid)
{
rideRequestId = message['data']['ride_request_id'];
}
else{
rideRequestId = message['ride_request_id'];
}
return rideRequestId;
}
void retrieveRideRequestInfo(String rideRequestId, BuildContext context){
newRequestsRef.child(rideRequestId).once().then((DataSnapshot dataSnapshot)
{
if (dataSnapshot.value != null) {
double pickUpLocationLat = double.parse(
dataSnapshot.value['pickup']['latitude'].toString());
double pickUpLocationLng = double.parse(
dataSnapshot.value['pickup']['longitude'].toString());
String pickUpAddress = dataSnapshot.value['pickup_address'].toString();
}
});
}
}
运行日志:
D/FLTFireMsgReceiver(8777): 收到消息的广播
W/FLTFireMsgService(8777):无法处理后台消息 在 Dart 中,因为没有注册 onBackgroundMessage 处理程序。
W/FirebaseMessaging(8777):无法记录事件:分析库是 缺少 W/FirebaseMessaging(8777):通知通道设置在 应用程序尚未创建 AndroidManifest.xml。默认值 将会被使用。 E/NotificationManager(8777):notifyAsUser: tag=FCM-Notification:111236427, id=0, user=UserHandle{0}
【问题讨论】:
-
当您的应用在后台(在菜单中或在其他应用中)或终止(关闭)时是否会出现错误?
-
在使用其他应用时出现错误。