科尔多瓦应用程序 - 如何检测它是否是相同的设备/帐户

问题描述:

我正在创建一个Cordova移动应用程序,该应用程序将拥有一个本地数据库,该数据库将存储一些用户选择的设置。我也将发送用户首选项到服务器。科尔多瓦应用程序 - 如何检测它是否是相同的设备/帐户

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

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

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

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

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

+0

我想知道为什么这个信息(UUID或IMEI号)不能存储在服务器端的第一次访问,然后可以参考任何后续访问?这种方式的实施将是愚蠢的证明,我们不必真的担心应用程序卸载 – Gandhi

+0

@Gandhi - iOS不给开发人员访问UUID(https://*.com/questions/6993325/uidevice-uniqueidentifier-deprecated-现在做什么),也不IMEI(https://*.com/questions/19927160/finding-imei-number-using-objective-c) – kris

+0

你检查了这个链接 - https:// *。 com/questions/21878560/how-to-preserve-identifierforvendor-in-ios-after-uninstalling-ios-app-on-device%3E有办法解决这个问题 – Gandhi

深挖这个问题后,我能得到一个现成的插件,它应该能够解决这个问题 - UniqueDeviceID plugin

插件声称,该ID将保持相同的应用程序卸载后。但是,在应用更新后,我可以看到有人面临issue,因为它返回不同的ID。一些解决方案也发布在同一问题评论上。尽管如此,这是我能找到的与OP最接近的要求匹配的唯一插件。即使需要做一些调整来解决一些问题,我觉得这个插件应该是一个起点。希望能帮助到你。干杯

+0

Thanks @Gandhi - 我刚刚在iOS和Android设备上尝试了这个插件 - 删除然后重新安装应用程序 - 在第二次运行时,它在每台设备上报告与第一次运行相同的UUID。我意识到这可能不是百分之百的万无一失,并感谢你与记录的问题的联系,但它大多数时间对我来说是一个足够好的解决方案。 – kris

+0

@kris很高兴帮助。干杯 – Gandhi

对于iOS:

您可以通过使用this library做到这一点(或只是实现它在你的代码自己使用)。这个过程的uid保存在设备的keystore将是相同的,即使应用程序被卸载并再次安装多次。您也可以使用iCloud synchronization为此用户使用相同的uid

对于Android的:

SO answer是一个很好的解决方案。尽管如果用户闪动手机,它可能会改变。如果您对每个设备都有一个唯一的ID非常关键,那么imei将是您在Android手机中的不错选择,但它需要READ_PHONE_STATE权限。要通过设备同步这个id,您需要将它映射到类似登录信息等内容。据我所知,没有这种映射就无法做到。

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