我已经构建了一个应用程序,并使用了Firebase消息传递包以及Firebase云通知。通知到了,我对此感到满意。我还想做的是将这些通知存储到数据库中,并为用户提供一个方便的部分,直接在应用程序内部列出所有这些先前的通知。
对于数据库,我使用的是SQLite程序包,我可以毫无问题地对其进行设置。我已经进行了测试并且可以正常工作(我已经创建了存储,更新,删除过程)。
现在我正在尝试将这两个连接在一起。因此,在iOS收到通知后,我想运行这些过程之一将通知存储在数据库中。但是,它似乎没有用,我不确定我在这里掌握的内容。我的代码如下所示,这样您就可以理解:
import 'package:flutter/material.dart';
import 'package:thw/utilities/constants.dart';
import 'package:thw/screens/main_screen.dart';
import 'package:thw/widgets/widgetNotifications.dart';
import 'package:thw/services/db.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'dart:io';
Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async {
if (message.containsKey('data')) {
// Handle data message
final dynamic notification = message['data'];
print(notification);
await DbModel().dbOpen();
await DbModel().dbInsert(notification['title'], notification['body']);
}
if (message.containsKey('notification')) {
// Handle notification message
final dynamic notification = message['notification'];
print(notification);
await DbModel().dbOpen();
await DbModel().dbInsert(notification['title'], notification['body']);
}
}
class NotificationsScreen extends StatefulWidget {
@override
_NotificationsScreenState createState() => _NotificationsScreenState();
}
class _NotificationsScreenState extends State<NotificationsScreen> {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
List notifications;
@override
void initState() {
super.initState();
notifications = [];
getAllNotifications();
... more code
我在每个屏幕上都添加了此代码。我有加载,主屏幕和通知屏幕。但是这部分似乎不起作用:
Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async {
if (message.containsKey('data')) {
// Handle data message
final dynamic notification = message['data'];
print(notification);
await DbModel().dbOpen();
await DbModel().dbInsert(notification['title'], notification['body']);
}
if (message.containsKey('notification')) {
// Handle notification message
final dynamic notification = message['notification'];
print(notification);
await DbModel().dbOpen();
await DbModel().dbInsert(notification['title'], notification['body']);
}
}
我想知道我做错了什么吗?我对它的工作原理是否掌握得不好?通知到达了,但是带有dbOpen和dbInsert的部分似乎从未运行。