情况:
用户在没有互联网连接的情况下启动应用程序。我尝试在启动活动中匿名认证它们,并在具有以下规则结构的数据库中执行对引用 '/ users / $ uid' 的数据库写操作:>
{
"rules": {
"users": {
"$user_id": {
".write": "$user_id === auth.uid",
".read": "$user_id === auth.uid"
}
}
}
}
因此,如果发生这种情况,并且用户随后上网,则实际上将执行排队的数据库事务-还是我需要手动重新进行身份验证并重试数据库事务?
我不确定如果用户处于脱机状态是否会生成用于匿名身份验证的 uid ,所以我认为数据库引用无法解析。
参考链接:
https://firebase.google.com/docs/auth/android/anonymous-auth https://firebase.google.com/docs/database/android/offline-capabilities
答案 0 :(得分:1)
我将数据保存在共享首选项或本地数据库中(取决于您要保存的数据类型)。
此后,要么启动后台服务并尝试每隔10分钟连接到您的实时数据库,要么下一次您希望用户打开应用程序并检查是否需要检查身份验证。
对于后台服务,我建议使用AlarmManger。
答案 1 :(得分:0)
因此,在测试之后,我发现:
要解决此问题,我正在通过SharedPreferences使用本地存储来获取最基本的数据,并在实例化引用用户uid的DatabaseReference之前等待连接。