在我的应用程序中,我使用获取位置数据并将其发送回服务器。该应用程序在以前的版本中运行良好,它在iOs 10中崩溃。我正在使用Xcode 8.日志中显示以下消息。
Couldn't find the "com.apple.private.externalaccessory.showallaccessories" entitlement
[MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/delta/Library/Developer/CoreSimulator/Devices/EE3BD084-BA73-44F6-AD95-BE49BBE838AC/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
[MC] Reading from private effective user settings.
所以如何解决这个问题。
答案 0 :(得分:3)
在iOS 10中,如果您想访问私人数据,那么您必须提前申报或者您的应用会崩溃,这是一个重大变化。
如果您使用下面列出的任何框架
通讯录,日历,提醒,照片,蓝牙共享,麦克风, 相机,位置,健康,HomeKit,媒体库,动作,CallKit, 语音识别,SiriKit
您必须在 Info.plist
中声明说明以下是您必须为iOS10声明的Info.plist键的完整列表。
<!-- Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) photo use</string>
<!-- Camera -->
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>
<!-- Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) microphone use</string>
<!-- Location -->
<key>NSLocationUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
<!-- Location When In Use -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
<!-- Location Always -->
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) always uses location </string>
<!-- Calendars -->
<key>NSCalendarsUsageDescription</key>
<string>$(PRODUCT_NAME) calendar events</string>
<!-- Reminders -->
<key>NSRemindersUsageDescription</key>
<string>$(PRODUCT_NAME) reminder use</string>
<!-- Contacts -->
<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) contact use</string>
<!-- Motion -->
<key>NSMotionUsageDescription</key>
<string>$(PRODUCT_NAME) motion use</string>
<!-- Health Update -->
<key>NSHealthUpdateUsageDescription</key>
<string>$(PRODUCT_NAME) heath update use</string>
<!-- Health Share -->
<key>NSHealthShareUsageDescription</key>
<string>$(PRODUCT_NAME) heath share use</string>
<!-- Bluetooth Peripheral -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>$(PRODUCT_NAME) Bluetooth Peripheral use</string>
<!-- Media Library -->
<key>NSAppleMusicUsageDescription</key>
<string>$(PRODUCT_NAME) media library use</string>
<!-- Siri -->
<key>NSSiriUsageDescription</key>
<string>$(PRODUCT_NAME) siri use</string>
<!-- HomeKit -->
<key>NSHomeKitUsageDescription</key>
<string>$(PRODUCT_NAME) home kit use</string>
<!-- SpeechRecognition -->
<key>NSSpeechRecognitionUsageDescription</key>
<string>$(PRODUCT_NAME) speech use</string>
<!-- VideoSubscriber -->
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>$(PRODUCT_NAME) tvProvider use</string>
另外
能够与外部附件通信的应用必须在 Info.plist 文件中声明其支持的协议。
要声明您的应用支持的协议,您必须包含 应用的Info.plist中的 UISupportedExternalAccessoryProtocols 键 文件。此键包含一个标识字符串的字符串数组 您的应用支持的通信协议。
希望它有所帮助.. !!
答案 1 :(得分:1)
转到应用 Info.Plist 文件,并根据您的要求添加隐私密钥。
位置:
密钥:隐私 - 位置始终使用说明
价值:$(PRODUCT_NAME)位置使用
密钥:隐私 - 使用时的位置用法说明
价值:$(PRODUCT_NAME)位置使用
如果您添加了上述隐私密钥,但仍然会崩溃该应用。然后启用相应的&#34; 功能&#34;
示例:如果您正在使用&#34; 使用Bluettoth LE配件&#34;
项目 - &gt;能力 - &gt;背景模式 - &gt;使用蓝牙LE配件。