Я создаю систему уведомлений для своего мобильного приложения, идея состоит в том, чтобы хранить как передний план, так и фоновые сообщения, полученные из сообщения Firebase Cloud в SQLite. Я следовал указаниям , чтобы настроить мой проект.
Вот мой код:
void initState() {
super.initState();
service = MySQLService();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
service.insertItem(Item.fromMessage(message)); // It's working, here.
},
onBackgroundMessage: myBackgroundMessageHandler,
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
},
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
},
);
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(
sound: true, badge: true, alert: true, provisional: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
_firebaseMessaging.getToken().then((String token) {
assert(token != null);
print("Push Messaging token: $token");
});
}
И код для обработки фонового сообщения:
Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async {
print("onBackground: $message");
var service = MySQLService();
await service.insertItem(Item.fromMessage(message)); // It's not working, here.
return Future<void>.value();
}
На данный момент мое приложение может: получать сообщение переднего плана и сохранять его в SQLite (вызывая service.insertItem ), но по какой-то причине фоновое сообщение не сохраняется в SQLite, даже если оно отображается в списке уведомлений устройства.
ОБНОВЛЕНИЕ: здесь код для вставки сообщения
Future<void> insertItem(Item notification) async {
final Database db = await MyDatabase.getDatabase();
await db.insert('notification', notification.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace);
return Future<void>.value();
}