Flutter firebase_messaging 6.0.9如何将推送通知记录到数据库-sqflite:1.2.0

时间:2020-03-31 19:58:39

标签: flutter

我已经构建了一个应用程序,并使用了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的部分似乎从未运行。

0 个答案:

没有答案