使用Flutter通过MongoDB Atlas和Firebase Cloud Message创建通知功能
我想要实现的目标。
我想在Flutter应用程序(Android)中添加通知功能!应该怎么做?
如果使用Firebase Cloud Message(简称FCM),应该可以实现!
虽然我正在使用MongoDB Atlas作为云服务器,但是能实现吗?
有协作功能,应该很容易实现!还有文档可以参考…
噢,但是这被视为不推荐的选择,并且到2024年将完全停止支持。
那么就试试使用MongoDB的触发器吧!因为对于不太了解服务器端的我来说,这一点有些困难,所以我总结一下。
首先准备
除了这个问题以外,其他的问题我会简单地跳过。而且,我默认有服务器数据等。
- 第一步:
- 准备好Firebase项目。
第二步:
将Firebase Admin SDK添加到MongoDB Atlas中。在Triggers的Add Dependencies按钮中添加firebase-admin。
第三步:
从Firebase项目中获取projectId、clientEmail和privateKey。虽然还有一种方法是将文件放置在这里,但是由于自己能力有限,所以准备通过将数据直接粘贴到输出的json文件中来实施。
第四步:
在Flutter中初始化Firebase,然后在需要使用的任意时间将生成的令牌放置在所需的集合文档中。
第五步:
完成以上步骤后,在MongoDB Atlas的Triggers中使用Add Trigger来实施触发器。
马上执行

触发代码
exports = async function(changeEvent) {
// データベースからデータ取得
const serviceName = 'Cluster';
const database = 'Database';
const collection = context.services.get(serviceName).db(database).collection('Collection');
// ObjectID型でIDを取得
const docId = changeEvent.documentKey._id;
console.log(docId);
// デバイスに登録されたトークンを使うのでデバイスを取得
const device = await collection.findOne({ _id: docId});
// FCMの初期化
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.cert({
projectId: 'ProjectID',
clientEmail: 'ClientEmail',
privateKey: ('PrivateKey').replace(/\\n/g, '\n'),
}),
});
// コレクションのドキュメントからデータを取得
const token = device.token;
console.log(token);
// 通知に送るメッセージ
const message = {
notification: {
body: '通知のメッセージ',
title: '通知のタイトル'
},
token: token
};
// メッセージを送信し、そのレスポンスを処理する
admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
};
请根据下面的解释,对它们进行相应的更改,因为现在的情况无法进行操作。
简单解释
我希望将任意的字符串进行更改。
数据库集合集群,请将其更改为适用于每个MongoDB Atlas的名称。
ProjectID, ClientEmail, PrivateKey这些可以通过从Firebase下载Json文件获得。
作为方法,您可以从Firebase控制台中,
转到设置 -> 项目设置 -> 云消息传递 -> 管理服务帐户,然后显示帐户,
然后转到密钥管理 -> 添加密钥,下载Json文件,并将其应用于上述三个选项。
请将通知的标题和通知内容设为需要跳过的内容!
非常参考
将其根据属性、实现位置和服务进行分类。
MongoDB 是一种开源的、面向文档型数据库管理系统。
Push Notifications [Deprecated]
非推奨ですが、Atlasで簡単にFCM連携する方法が載ってる公式ドキュメントです。
Push Notifications Using Atlas App Services & iOS Realm SDK
AtlasのTriggerのコードがメインで乗ってます。FCMのあたりは詳しく乗ってないです。
MongoDB Stitch の Triggers / Functions で気軽に始めるサーバレス生活
AtlasのTriggerやFunctionについて詳しく書いてあって理解がはかどります。
Firebase : 云端平台
Flutter で Firebase Cloud Messaging クライアント アプリを設定する
FlutterでFirebaseのサーバーでFCMを使う方法が載っています。トークンを生成するあたりが参考になります。
サーバーに Firebase Admin SDK を追加する
MongoDB AtlasにFirebase Admin SDKを追加するときに参考になったり。
[messaging] TypeError: Value is not an object: undefined
Firebase Admin SDKのバージョン関連でエラーが出るのでその参考になります。