在iOS10中,如果你的App想要訪問用戶的相機、相冊、麥克風、通訊錄等等權限,都需要進行相關的配置,不然會直接crash。
需要在info.plist中添加App需要的一些設備權限。
NSBluetoothPeripheralUsageDescription
訪問藍牙
NSCalendarsUsageDescription
訪問日歷
NSCameraUsageDescription
相機
NSPhotoLibraryUsageDescription
相冊
NSContactsUsageDescription
通訊錄
NSLocationAlwaysUsageDescription
始終訪問位置
NSLocationUsageDescription
位置
NSLocationWhenInUseUsageDescription
在使用期間訪問位置
NSMicrophoneUsageDescription
麥克風
NSAppleMusicUsageDescription
訪問媒體資料庫
NSHealthShareUsageDescription
訪問健康分享
NSHealthUpdateUsageDescription
訪問健康更新
NSMotionUsageDescription
訪問運動與健身
NSRemindersUsageDescription
訪問提醒事項
從2017年1月1日起,強制使用https,所有新提交的 app 默認不允許使用NSAllowsArbitraryLoads來繞過ATS的限制 安全傳輸不再支持SSLv3, 建議盡快停用SHA1和3DES算法
2.隱私數據訪問問題:
你的項目中訪問了隱私數據,比如:相機,相冊,聯系人等,在Xcode8中打開編譯的話,統統會crash
這是因為iOS對用戶的安全和隱私的增強,在申請很多私有權限的時候都需要添加描述,但是,在使用Xcode 8之前的Xcode還是使用系統的權限通知框.
要想解決這個問題,只需要在info.plist添加NSContactsUsageDescription的key, value自己隨意填寫就可以,這里列舉出對應的key(Source Code模式下):
<!-- 相冊 -->
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能訪問相冊</string>
<!-- 相機 -->
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能訪問相機</string>
<!-- 麥克風 -->
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能訪問麥克風</string>
<!-- 位置 -->
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能訪問位置</string>
<!-- 在使用期間訪問位置 -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能在使用期間訪問位置</string>
<!-- 始終訪問位置 -->
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始終訪問位置</string>
<!-- 日歷 -->
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能訪問日歷</string>
<!-- 提醒事項 -->
<key>NSRemindersUsageDescription</key>
<string>App需要您的同意,才能訪問提醒事項</string>
<!-- 運動與健身 -->
<key>NSMotionUsageDescription</key> <string>App需要您的同意,才能訪問運動與健身</string>
<!-- 健康更新 -->
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的同意,才能訪問健康更新 </string>
<!-- 健康分享 -->
<key>NSHealthShareUsageDescription</key>
<string>App需要您的同意,才能訪問健康分享</string>
<!-- 藍牙 -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能訪問藍牙</string>
<!-- 媒體資料庫 -->
<key>NSAppleMusicUsageDescription</key>
<string>App需要您的同意,才能訪問媒體資料庫</string>
如果不起作用,可以請求后臺權限,類似于這樣:
<key>UIBackgroundModes</key>
<array>
<!-- 在這里寫上你在后臺模式下要使用權限對應的key -->
<string>location</string>
...
</array>