1

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

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

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

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

实现这种功能的每个人都有什么经验?

4

2 回答 2

2

好的,这就是我要做的,基于 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

So my database can increase the number of 5.1 devices and decrease the number of 5.0 devices by one.

Of course, on the first request, the HTTP parameter old_os_ver is set to empty, and the server treats it like a new device.

If I pull this right, I no longer need UUIDs. But I am still sending system info covertly to my server. I think I'll also disclose this on the Terms of Use.

于 2012-06-25T08:36:05.120 回答
1

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

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

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

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

于 2012-06-25T06:53:00.437 回答