Xamarin形成Android-是否可以使用共享偏好或安全存储在重新安装应用程序时恢复数据



我正在使用Xamarin表单创建一个示例Android应用程序。当用户安装应用程序时,我会为该特定设备随机生成一个唯一的ID。我使用Xamarin.Essentials将值存储在共享首选项/安全存储中,只是为了检查持久性。当我登录和注销应用程序时,它会保存数据。但在卸载和安装应用程序时,数据并没有持久化,而是创建了一个新的ID。有人能帮我解决这个问题吗。我不确定这是否能实现,或者我做错了什么。我需要在设备上进行任何其他设置吗?

卸载应用程序将删除所有首选项。

https://learn.microsoft.com/en-us/xamarin/essentials/preferences?tabs=android

如果你想永久保存该设备的用户ID,你需要在第一次生成密钥后将其存储在服务器上。共享首选项只适用于客户端,它与应用程序的内存有关,一旦卸载应用程序,共享首选项就会被清除。

卸载应用程序后,首选项将被删除。

然而,对于您的场景可能有两种方法,

方法1

  • 将具有唯一名称的唯一文件存储在公共位置的某个文件夹中
  • 将数据存储在要持久化的文件中
  • 卸载后重新同步数据,并从公共位置的文件进行安装

缺点:用户可以手动删除它,在这种情况下,它将被视为新安装。

方法2

android设备有两种可识别的ID。

  1. 安全.ANDROID_ID

这是每个物理设备唯一的。在每个安卓设备引导之后,首次生成并维护了64位随机数使用寿命(除非设备在出厂时重置(。出厂后重置它可能会改变。

  1. UUID

这是每次安装应用程序的唯一编号。每次应用程序已安装,android每次安装都会生成此唯一id。

因此,为了满足您的需求,

  • 无需为每次安装生成唯一的随机数。您可以使用UUID
  • 安装应用程序后,您可以在服务器上存储Secure.ANDROID_ID,以及与该设备相对应的所有数据,这些数据要保留在服务器上的数据库中
  • 在重新安装和应用程序启动时,可以使用ANDROID_ID重新同步这些数据

缺点:在工厂重置时,ANDROID_ID可能会发生更改,可以将其视为新安装。

最新更新