我正在考虑使用 CFUUIDCreate
用于在我的服务器中构建数据库的 API,以衡量我的每个应用程序的用户百分比正在运行哪个版本的 iOS(帮助我决定 future 开发的 iOS 最低支持版本)。
我的问题是:我是否应该请求用户允许发送( 匿名 ) UUID/iOS 版本 数据对到我的服务器,还是可以自动完成?
我之所以问是因为我可以在安全方面打赌,无论如何都可以问,但大多数用户会对技术细节感到害怕,很可能会拒绝。此外,UIAlertView
中的文本越长,用户越有可能不会阅读它。
如果我不问,Apple 会拒绝我的应用吗?即使他们不这样做,您认为我是否应该始终要求用户允许发送此 匿名 数据?
实现这种功能的每个人都有什么经验?
最佳答案
好的,这就是我要做的,基于 Nikolai Ruhe 的回答,但改进了我刚刚发现的一个陷阱。
假设用户 John Doe 在他运行 iOS 5.0 的 iPhone 上安装了我的应用程序。
在第一次启动时,该应用程序向我的服务器发送了一个匿名请求,该请求有效地将“运行 iOS 5.0 的设备”的计数器增加了一个。应用程序会记录此事件和 iOS 版本(在用户默认值或钥匙串(keychain)中),并且只要本地存储的操作系统版本字符串与当前版本字符串(由系统返回)相等,就不会发送任何进一步的请求。
下周,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 - CFUUIDCreate、iOS版本使用统计和用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11184460/