【问题标题】:CFUUIDCreate, iOS version usage statistics and User PermissionCFUUIDCreate、iOS版本使用统计和用户权限
【发布时间】:2012-06-25 06:36:53
【问题描述】:

我正在考虑使用CFUUIDCreate API 在我的服务器中构建一个数据库,以衡量我的每个应用程序的用户百分比正在运行哪个版本的 iOS(帮助我决定 iOS 的最低支持版本)未来的发展)。

我的问题是:我应该请求用户允许将 (anonymous) UUID / iOS 版本 数据对发送到我的服务器,还是可以这样做自动吗?

我之所以问,是因为我可以在安全方面打赌,但无论如何都会问,但大多数用户会对技术细节感到害怕,很可能会拒绝。此外,UIAlertView 中的文字越长,用户越有可能不会阅读。

如果我不问,Apple 会拒绝我的应用吗?即使他们不这样做,您认为我是否应该始终要求用户允许发送此匿名数据?

每个人在实现此类功能时都有什么经验?

【问题讨论】:

  • 您可以自动执行此操作,Apple 不会拒绝。如果您希望用户知道这一点,那么您可以在应用程序的条款和条件中添加它。我也在我的应用中实现了这一点。
  • 太棒了。我想您的应用程序已获得批准。条款和条件的想法太棒了!
  • 是的...我的应用已获得批准并在过去 6 个月内进入应用商店。

标签: ios permissions uuid


【解决方案1】:

好的,这就是我要做的,基于 Nikolai Ruhe 的回答,但改进了我刚刚发现的一个陷阱。

假设用户 John Doe 在他运行 iOS 5.0 的 iPhone 上安装了我的应用程序。

在第一次启动时,该应用程序向我的服务器发送了一个匿名请求,该请求实际上将“运行 iOS 5.0 的设备”的计数器增加了一个。应用程序会记录此事件和 iOS 版本(在用户默认值或钥匙串中),并且只要本地存储的操作系统版本字符串与当前版本字符串(由系统返回)相等,就不会发送任何进一步的请求。

下周,John 升级到 iOS 5.1 并启动了我的应用程序。该应用程序检测到操作系统版本差异并向我的服务器发送新请求。

但是,如果这仅将一台设备添加到“iOS 5.1”人群中,那么 John 的 iPhone 现在会被计算两次:一次是“运行 5.0 的设备”,一次是“运行 5.1 的设备”。

所以要解决这个问题,我的 HTTP 请求应该如下所示:

http://myserver.com/my_stats_scripts/index.php?app_id=com.myCompany.myApp&new_os_ver=5.1&old_os_ver=5.0

所以我的数据库可以增加 5.1 设备的数量,减少 5.0 设备的数量。

当然,在第一次请求时,HTTP 参数old_os_ver 设置为空,服务器将其视为新设备。

如果我做对了,我就不再需要 UUID。但我仍在偷偷地将系统信息发送到我的服务器。我想我也会在使用条款中披露这一点。

【讨论】:

  • 完美!我的建议将计算设备上的更新并将更新计数与请求一起发送。但您的想法甚至更好,因为它可以让您跟踪每个 iOS 版本的准确计数。
  • 现在剩下的唯一问题是:用户默认值、钥匙串还是 /Caches 文件?
  • ... 还是 KVS(iCloud 键值存储)?每件事都有充分的理由。
  • 我会说钥匙串,因为它是每个设备并且在删除/重新安装后仍然存在。
  • 是的,我也喜欢 Keychain。用户默认值和缓存在重新安装时会被删除,我认为不是每个人都有 iCloud 帐户。
【解决方案2】:

您绝对应该征求许可。这里的关键是您的数据收集可能是匿名的,但它可以用来跟踪个人用户

Web 浏览器会随每个请求发送一个用户代理字符串。不同之处在于它们不会发送永远不会更改的通用可跟踪 id。

因此,您的提案中存在问题的部分是 UUID。为什么不把它排除在外?您的应用将发送一次匿名请求并在本地存储传输的 iOS 版本。当用户升级操作系统时,您会发送另一个请求,其中包含新的 iOS 版本和更新计数。

使用此方案,您不会传输可跟踪的数据,但仍会获得正确的按操作系统使用情况统计信息。

【讨论】:

  • 有趣,只发送一次“唯一请求”,没有 UUID。但请注意,我使用的是由 CFCreateUUID 返回的推荐的、不可跟踪的跨应用程序 UUID,并且不是已弃用的 UIDevice 方法。
  • 我了解 UUID 是由应用程序创建的。但由于它只创建一次,因此可以使用它来跟踪单个用户。如果您的应用程序会经常发送请求,您将能够跟踪(匿名)用户对应用程序的使用情况。只有在用户明确选择加入后,Apple 才会收集匿名使用数据。
  • 不经常;仅在安装和操作系统版本升级时。
猜你喜欢
  • 2015-05-24
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多