gpt4 book ai didi

android - 处理 FirebaseUI 登录和离线 Firestore 数据?

转载 作者:行者123 更新时间:2023-11-29 23:45:47 25 4
gpt4 key购买 nike

我很难弄清楚通过 FirebaseUI 进行的用户身份验证/登录如何与 Android 中 Firestore 数据库中数据的离线持久性相关。

我知道用户必须登录才能从数据库中检索他们的文档,但是当用户离线时会发生什么?在显示用户文档列表(如果有)之前,如何在我的应用程序中设置用户和数据检查流程?

如果我对以下文档(FirebaseUIFirestore offline data)的理解有误,请纠正我。

所以我认为基本上用户会看到 3 个页面:

  1. 注册/登录页面
  2. 当用户在数据库中没有数据时的空白页面
  3. 他们的文件 list

第一个注册/登录页面应显示给首次使用的用户和注销的用户(无论用户自己已注销还是登录 token 已过期)。这就是 FirebaseUI 派上用场的地方。我可以仅使用 getCurrentUser 方法检查这两种情况吗?当用户离线时,此方法返回什么?我是否在 managing users 的文档中的某处遗漏了这一点? ?

应该为数据库中没有任何数据的登录用户显示第二个空白页面(无论是因为他们是第一次登录还是删除了所有数据)。我是否使用 get 调用来检查数据?当没有数据或我必须使用什么监听器时它会返回什么?我是否在 getting data 的文档中的某处遗漏了这一点? ?

第三个列表页面应该为拥有现有数据或刚刚创建数据/文档的登录用户显示。这可以通过对该集合的 get 调用对集合进行查询来获得。

最后,您是否可以按照以下方式将所有这些从一个 Activity/fragment 中组合在一起并在 onCreate/onCreateView 中排序?

首先 - 检查第一次和注销的用户:如果是,则显示(扩充)第一页(即启动 FirebaseUI 登录 Intent Activity )。用户注册/登录后会发生什么?用户是否被带回原始 Activity/fragment ?我该如何处理?

第二 - 检查数据库中的数据:如果没有数据则显示“空白”页面。如果有数据,则显示文档列表。这似乎可以通过在同一布局中切换文本“Empty”的 TextViewRecyclerView 之间的可见性来解决(参见 this SO 帖子)。

请帮忙!

最佳答案

Can I check for both cases with just the getCurrentUser method? What does this method return when the user is offline?

FirebaseAuth 对象上调用 getCurrentUser() 方法时,它会返回类型为 FirebaseUser 的对象如果身份验证过程成功。

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

但在此之前,您需要通过调用静态 FirebaseAuth.getInstance() 来实例化 firebaseAuth 对象像这样的方法:

FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();

因此,如果身份验证过程成功并且您正在下线,没关系,调用 getCurrentUser() 将始终返回 FirebaseUser 对象。

Do I use a get call to check for data?

是的,您应该使用 get() 调用并首先检查 if (task.isSuccessful()) ,然后检查数据是否存在于特定位置。

What does it return when there is no data or what listener do I have to use?

它将返回一个空的 DocumentSnapshot 对象。因此,首先您需要使用 get() 并使用 addOnCompleteListener()

This can be obtained with a query on a collection via a get call on that collection.

是的,没错。

Finally, would you tie all this together from within one activity/fragment in the following way and order in onCreate/onCreateView?

是的,您可以在一个 Activity/fragment 中将所有这些联系在一起。

What happens after the user has signed up/signed in? Is the user brought back to the originating activity/fragment? How do I handle this?

如果用户注销,您应该将用户重定向到 LoginActivity。我在我的 tutorials 中解释过 循序渐进,整个认证过程使用 Google Firebase .

Check for data in the database: If there is no data then display an 'empty' page.

This 是一种推荐的方式,您可以使用 FirestoreRecyclerAdapter 从 Cloud Firestore 数据库检索数据并在 RecyclerView 中显示数据。所以在这种情况下,您可以像这样覆盖 onDataChanged():

@Override
public void onDataChanged() {
if (getItemCount() == 0) {
recyclerView.setVisibility(View.GONE);
emptyView.setVisibility(View.VISIBLE);
} else {
recyclerView.setVisibility(View.VISIBLE);
emptyView.setVisibility(View.GONE);
}
}

关于android - 处理 FirebaseUI 登录和离线 Firestore 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com