Cordova App - 如何检测是否是同一个设备/账户

Cordova App - how to detect if it is the same device / account

我正在创建一个 Cordova 移动应用程序,它将有一个本地数据库来存储一些用户选择的设置。我还将把用户首选项发送到服务器。

我希望即使用户删除应用程序并重新安装,用户首选项也能保留。
如果偏好在用户拥有的多个设备(通过他们的 Google Play 帐户或他们的 Apple ID)中持续存在,那也是可取的,但这并不重要。

我不希望用户需要为我的应用程序创建一个帐户。

一个选项是获取设备的 UDID 并使用它重新连接到 "same" 帐户,但我知道在多次安装后这实际上并不可靠。

理想的可能是 Google Play 帐户和 iTunes 帐户。我见过 Android 游戏和使用它的 Apple 应用程序。是否有 Cordova 插件可以访问这两者?

什么是跨平台应用程序的好简单解决方案,以了解它是否 运行在与以前 运行 相同的设备上运行?

对于iOS :

您可以使用 this library (or just implement it for your own use in your code). The uid of this process is saved in device's keystore and will be the same even when app is uninstalled and installed again several times. Also you can have the same uid for this user using 来完成此操作。

对于Android:

这个SO answer是一个很好的解决办法。尽管如果用户刷新其 phone,它可能会改变。如果每个设备都有一个唯一的 ID 对您来说非常重要,imei 将是您在 android phone 中的一个不错的选择,但它需要 READ_PHONE_STATE 许可。要在设备上同步此 id,您需要将其映射到登录信息等内容。据我所知,没有这样的映射你做不到。

要在 Cordova 中使用这些解决方案,您需要将此代码放入库中(即 .jar.framework 文件)并为您的 Cordova 创建一个插件应用程序调用这些库的 getUid() 方法(假设您将方法命名为 returns 唯一标识符,getUid)。

深入研究这个问题后,我得到了一个现成的插件,应该可以解决这个问题 - UniqueDeviceID plugin

该插件声称应用程序卸载后 ID 保持不变。但我可以看到有人在应用程序更新后面临 issue,因为它 returns 不同的 ID。一些解决方案也已发布在同一问题评论中。

尽管如此,这是我能找到的唯一与 OP 的要求最接近的插件。即使需要做一些调整来解决一些问题,我觉得这个插件应该是起点。希望能帮助到你。干杯