我想像WhatsApp一样在Flutter中创建一个实时应用程序。但是,我不知道如何进行后端编码(Firebase),以确保将在该应用程序中注册的用户之间的私人消息收发?
请问有没有涵盖我这个问题的教程?
答案 0 :(得分:1)
Firebase在后端数据库方面提供了两种解决方案。
1)实时数据库-Firebase的原始数据库实现。它使用nosql数据结构实时发送和接收数据。数据基于大型json树状结构,已连接的客户端可以读取和写入(具有足够的权限)。我认为该解决方案为简单数据类型和最少数据提供了一种轻量级的结构。
2)Cloud Firestore-Firebase的最新数据库实施。也使用nosql数据结构,但不是使用一个大的JSON树,而是使用集合和文档结构,其中一个集合可以包含许多文档。我认为,此解决方案的伸缩性更好,易于查看分层数据
数据库摘要
实时数据库将所有数据存储在一个大的json树中,而Cloud Firestore将数据存储在一个Collection / Document结构中(无论如何,它与json非常相似)。建议新项目开始使用Cloud Firestore,而旧项目可以继续使用实时数据库。
这里有两种解决方案的摘要 https://firebase.google.com/docs/database/rtdb-vs-firestore
即时消息应用程序
您可以使用称为“消息”的集合定义Cloud Firestore数据库,该集合将包含许多文档。每个文档都包含一些数据类型,例如
-消息(例如“ hello!”)
-发件人(例如'test@gmail.com')
-时间戳记(例如,“ UTC + 1于2020年5月18日下午3:08:52”)
所以数据库看起来像(使用json来显示关系)
{
"messages": {
"document1": [
{
"message": "Hello!"
},
{
"sender": "test@gmail.com"
},
{
"timestamp": "May 18, 2020 at 4:00:00 PM UTC+1"
}
],
"document2": [
{
"message": "Hi test!"
},
{
"sender": "jim@gmail.com"
},
{
"timestamp": "May 18, 2020 at 4:01:00 PM UTC+1"
}
]
....
}
}
身份验证
Cloud Firestore有许多不同的登录方法,首先您可以简单地实现“电子邮件/密码”,这允许客户端使用其凭据进行注册,并在Cloud Firestore中将用户ID与用户相关联。然后,可以在数据库规则内使用用户ID,以仅允许经过身份验证的用户从数据库读取和写入(可以进一步自定义)。一个示例数据库规则如下所示:
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
Firebase此处https://firebase.google.com/docs/firestore/data-model
提供有关数据模型的文档答案 1 :(得分:1)