flutter - Flutter firebase_messaging 6.0.9 如何将推送通知记录到数据库中 - sqflite: 1.2.0
问题描述
我已经构建了一个应用程序,并将 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 的部分似乎从未运行。
解决方案
推荐阅读
- node.js - Node.js 使用 XMLHttpRequest POST 404 错误
- css - 即使我不包括在内,也会应用 Google 字体粗细
- reactjs - 在 Heroku 上部署时,图像未在 React 应用程序中加载
- objective-c - 如果没有返回语句的 Obj-C 方法包含 @try @catch 块,则它会编译
- c++ - 在查找大输入的数字总和时出错?
- android - 离子构建 --verbose android 错误 ts2740
- reactjs - 反应如何在点击后将 onclick 切换为 false?
- ruby - 我可以在 Ruby 中将一个局部变量命名为“$name”,但它不会成为全局变量吗?
- python - 如何在 Python 中更新来自 DynamoDB 的最新数据条目?
- r - 过滤器命令在 Shiny 中不起作用