对于哪些API方法/属性在iOS 10中需要隐私“目的字符串”,是否存在精确文档?
我有一个应用程序链接到只访问以下方法/属性的CoreBluetooth
框架:
state
- retrieveConnectedPeripheralsWithServices:
name
在文档中,我发现了以下模糊的陈述(强调我的):
iOS 10.0上或之后链接的iOS应用必须在其Info.plist文件中包含其需要访问的数据类型的使用说明密钥,否则将崩溃。 要专门访问蓝牙外设数据,必须包含NSBluetoothPeripheralUsageDescription。
[...]
当系统提示用户允许使用时,您为此密钥提供的值将显示为警报的一部分。
[...]
为了保护用户隐私,在iOS 10.0或之后链接的iOS应用以及访问蓝牙界面,必须静态声明这样做的意图。在应用程序的Info.plist文件中包含NSBluetoothPeripheralUsageDescription键,并为此密钥提供目的字符串。 如果您的应用在没有相应目的字符串的情况下尝试访问蓝牙界面,则您的应用会退出。
[...]
Table 1-2中描述了需要用户权限的数据和功能。
(表1.2指出访问“蓝牙外围设备”需要NSBluetoothPeripheralUsageDescription
)
我的应用 当前在调用列出的API时退出。它也没有“提示用户允许使用”。
但是,this blog post表示没有崩溃不表示不需要用途字符串。
(尽管我的应用程序没有“在iOS 10.0之上或之后链接”(当前版本已经存在于iOS 10之前的商店中),但 崩溃引用了一个{ {1}}当它试图访问相机时。)
此外,我对上述文档的阅读表明我应该包含NSCameraUsageDescription
的条目。
是否还有其他任何我错过的文档列出了哪些隐私目的字符串涵盖哪些实际的API调用?
我是否需要为NSBluetoothPeripheralUsageDescription
添加NSBluetoothPeripheralUsageDescription
条目?
如果证明不需要这样的条目,是否有任何损害?
答案 0 :(得分:1)
是的,你肯定需要它,它在pre-ios10中是可选的,但现在你必须明确地将注释添加到info.plist 如果您使用iOS10构建。它会崩溃应用程序,但如果您使用pre-ios 10构建它就没问题了。它基于不基于设备版本的Xcode构建
所以基本上,下次更新应用时需要添加它。
顺便说一句,我找不到它的文档,这是我从iOS9转移到iOS10时的经验