Я пытаюсь отправить сообщение с моего сайта пользователям с Firebase
и сохранить сообщение на пользовательском устройстве с помощью плагина sqflite
.
Когда приложение на переднем плане, все работает хорошо и сообщениевставить в базу данных.Но когда приложение в фоновом режиме или полностью закрывается, оно просто отображает уведомление и данные, не вставленные в базу данных.
edit:
После установки click_action
для уведомления,Нажатие на данные уведомления будет сохранено, но если пользователь отклонит потерянные данные уведомления.
код
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
@override
void initState() {
prepareFirebaseCloudMessaging();
super.initState();
}
void prepareFirebaseCloudMessaging() {
if (Platform.isIOS) IOSPermission();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
notificationDataHandler(message);
},
onResume: (Map<String, dynamic> message) async {
notificationDataHandler(message);
},
onLaunch: (Map<String, dynamic> message) async {
notificationDataHandler(message);
},
);
}
void notificationDataHandler(Map<String, dynamic> message) async {
try {
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'MY_DATABASE_FILE.db');
Database database = await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
await db.execute(
'CREATE TABLE Messages (id INTEGER PRIMARY KEY, message TEXT, date TEXT, seen INTEGER)');
});
Message messageStore = Message(
null, message["data"]["message"], message["data"]["date"], false);
await database.insert("Messages", messageStore.toMap());
database.close();
}catch(e){
debugPrint(e.toString());
}
}