Я использую firebase_messaging для уведомления, все работает нормально. У меня есть экран видеозвонка. Я хочу запускать этот экран при уведомлении, когда приложение работает в фоновом режиме. Он отлично работает, когда приложение находится на переднем плане.
вот мой код интеграции firebase:
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
Map data = message["data"];
if (data.isNotEmpty){
Fcm.startRinging(data);
} else {
showNotification(title: "Message", body: "Telemedicine");
}
},
onLaunch: (Map<String, dynamic> message) async {
Map data = message["data"];
print("OnLaunch::: $message");
showNotification(title: "Message", body: "Telemedicine Call");
},
onBackgroundMessage: Fcm.myBackgroundMessageHandler,
onResume: (Map<String, dynamic> message) async {
Map data = message["data"];
print("onResume::: $message");
},
);
Здесь я обрабатываю уведомление о полезной нагрузке, когда приложение находится в фоновом режиме:
class Fcm{
static Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async {
print("hello"+message.toString());
if (message.containsKey('data')) {
// Handle data message
final dynamic data = message['data'];
await startRinging(data);
print(data);
}
if (message.containsKey('notification')) {
// Handle notification message
final dynamic notification = message['notification'];
print(notification);
}
return Future<void>.value();
// Or do other work.
}
static void startRinging(Map<dynamic, dynamic> data) async {
print("start");
String docName = data["DoctorName"];
String docImage = data["DoctorImage"];
String room = data["RoomName"];
String token = data["PatientToken"];
Route route = MaterialPageRoute(builder: (_)=> CallResponse(
docName: docName,
docImage: docImage,
token: token,
roomName: room
));
<Here I am trying to start next route but i don't have BuildContext>
// await Navigator.push(context, route);
}
}