Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – Firebase:登录前写入数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的 Android应用程序中使用Firebase.
我的目的是应用程序的用户应该能够将数据写入数据库,但我不希望用户注册,因此我使用匿名登录.

我有一个用户可以提交的表单,并将提交给数据库.在提交时,可能无法匿名登录.我是否可以在Firebase中调用数据库的写入指令并将其写入本地并在用户匿名登录时提交?

我知道Firebase确实提供了离线功能.但我假设如果我在登录调用写入数据库,它会给我一个错误.

解决方法

在开发应用程序时我有同样的顾虑.如果用户将手机置于飞行模式或首次启动时处于脱机状态,则可能会在匿名身份验证成功完成之前达到需要保存数据的程度.

解决方法是在数据库中创建一个可由任何人写入的“未经身份验证的”树,但只有在经过身份验证后才可读.对用户进行身份验证后,您可以将数据复制到适当的位置,并删除未经身份验证的区域中写入的任何数据.您可以将要写入的数据排队,Firebase将在用户联机时自动写入.

诀窍是在未经身份验证的树中获取推送ID,您将用作临时用户ID.应使用SharedPreferences或您选择的其他方法在本地持久保存此值.

db = FirebaseDatabase.geTinstance();
    db.setPersistenceEnabled(true);

    dbRef = db.getReference();

    // This key should be saved on the user's device until authenticated
    String key = dbRef.child("unauthenticated").push().getKey();

    // Write some data 
    dbRef.child("unauthenticated").child(key)
         .child("somedata").SETVALue("tesTing");

只要网络连接可用,您对此子项的任何写入都将保留.将侦听器附加到此临时键可能如下所示……

dbRef.child("unauthenticated").child(key).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d("DB","Got value from database: " + dataSnapshot.child("somedata").getValue());

            if(FirebaseAuth.geTinstance().getCurrentUser() != null) {
                /** If user is authenticated,move data to authenticated LOCATIOn **/
            }
        }
        @Override public void onCancelled(DatabaseError databaseError) {}
    });

大佬总结

以上是大佬教程为你收集整理的android – Firebase:登录前写入数据库全部内容,希望文章能够帮你解决android – Firebase:登录前写入数据库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。