我们正在实现 loginless system在我们的网络、iOS 和 Android 应用程序上,允许用户拥有永久身份,而无需任何注册/登录流程。
loginless 的一个关键部分是依靠 iOS 和 Android 将我们应用程序的数据永久存储在用户的 iCloud/Google 帐户中,以便在每种情况下为用户自动恢复数据:
- (i) 退出并重新打开应用程序(在 Android 中使用
SharedPreferences
,在 iOS 中使用UserDefaults
完成) - (ii) 在同一台设备上卸载并重新安装应用程序(通过 Android1 中的
key/value backup
、Keychain
+NSUbiquitousKeyValueStore
完成> 在 iOS 中) - (iii) 根据旧设备的备份设置新设备(通过 Android1 中的
key/value backup
,UserDefaults
+Keychain
+NSUbiquitousKeyValueStore
在 iOS 中) - (iv) 在一台全新的设备上安装该应用程序,该设备已登录用户之前使用该应用程序所使用的同一 iCloud/Google 帐户(通过 iOS 中的
NSUbiquitousKeyValueStore
完成)
我们唯一剩下的就是弄清楚如何为 Android 完成 (iv)。是否key/value backup在 Android 中恢复数据在这种情况下,即使全新的设备不是从旧设备的备份设置的?
我们发现了 Cloud Firestore 的存在和 AccountManager在我们的研究期间,但似乎 Cloud Firestore 中的数据是基于设备的,因此它无法完成 (iv),而且 AccountManager 似乎需要征得用户的许可才能通过 android 请求他们的帐户.permission.GET_ACCOUNTS
,加上无登录的整个设计旨在不要求用户提供任何个人身份信息。我们的这些结论是否正确,或者是否可以使用 Cloud Firestore 来完成 (iv)?在 Android 中还有什么我们可以用来完成 (iv) 的吗?
¹ 我们决定使用键/值备份而不是自动备份,因为备份的频率大于自动备份的频率。查看更多差异信息in Android's documentation .
最佳答案
如果 android:allowBackup 共享首选项应该从以前的设备恢复属性设置为 true。据我所知,如果您在 Google(云端硬盘)备份了您的手机,则此方法有效。
关于android - 如何让 Android 将应用程序数据存储在用户的 Google 帐户中,以便在新设备上安装时恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64302491/