【问题标题】:Android and iOS preferences and unique identifierAndroid 和 iOS 首选项和唯一标识符
【发布时间】:2015-02-26 17:45:04
【问题描述】:

我计划在用户首次登录 Android 和 Apple 应用程序后存储一个唯一标识符。这将确保用户在尝试通过另一台设备登录时只能从一台设备访问数据,因为我将标记为具有访问权限。我会将这个唯一标识符保存在设备首选项中,并使用它来请求获取这些私人数据。

话虽如此,我知道可以删除或删除首选项。这段数据不是长期需要的,在紧急情况下,我们可以重置用户帐户,就像他们从未获得访问权限一样,就像恢复出厂设置或删除应用一样。

我的问题是,这有什么问题吗?这些非开发人员因此以某种方式访问​​用户偏好以找到该唯一标识符并在其他地方使用它应该不是问题。

【问题讨论】:

  • 为什么要使用唯一 ID?只需对您的服务使用标准登录名/密码并下载该用户的数据。这也意味着,如果用户重新设置他们的设备,唯一 ID 不会丢失。
  • 如果我这样做,他们可以与任何人分享他们的用户名/密码并获得相同的数据。这是每个设备绑定的,这是整个问题的原因。我已经提到,在紧急情况下他们可以请求重置,这是临时事件,不是长期的,所以如果他们重置它,该事件可能不再起作用。
  • 如果设备损坏并被更换会怎样?或者用户购买了一部新手机?或者,如果他们想通过移动中的手机和家里的 iPad 访问数据?或者设备发生变化的任何场景?用户基本上无法访问他们已付费的内容。
  • 我再重复一遍。这是临时数据。如果一个事件持续了 5 天并且他们使用了这么长时间的数据,那么之后他们就不再需要它了。如果在此期间手机因某种原因坏了,他们可以请求紧急重置。

标签: android ios iphone sharedpreferences uniqueidentifier


【解决方案1】:

IOS:

你不应该担心你自己因为没有必要将标识符存储到用户首选项(这不是一个好习惯)。

您只需使用: [[[UIDevice currentDevice] identifierForVendor] UUIDString];

只要从同一设备和同一供应商调用它,它将返回相同的值。这在以下内容中进行了解释: http://www.doubleencore.com/2013/04/unique-identifiers/

【讨论】:

  • 我知道这个值并且可能会使用它。安卓呢?我需要在这两个地方创建一个唯一的 ID,并将该值存储在用户偏好中不会有什么大不了的,除非他们删除应用程序或清除数据,这是他们没有理由在这个应用程序上做的事情。
  • 据我所知 android.telephony.TelephonyManager.getDeviceId() 每次调用它时也会返回相同的值,所以再次不需要首选项
  • 但我读到这不适用于平板电脑或恢复出厂设置。如果他们为 iOS 重置手机并获得新的供应商 ID,可能会有什么不同。与我自己创造的情况相同。
  • 我不是 Android 专家,但我确信一定有您可以信赖的东西。如果没有,也许有一些更安全的地方可以存储标识符值。例如MAC有“钥匙链”,我不知道Android是否有类似的东西,但我认为有。但是,如果您不关心安全性,只需将其存储在 prefs 中即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2010-11-28
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多