問題出現(xiàn)
今天在IOS10上使用app是在拍照功能Crash、訪問相冊也Crash,IOS9上是正常的。連機調(diào)試發(fā)現(xiàn)報錯如下:
This app has crashed because it attempted to access privacy-sensitive data without a usage description.The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
崩潰原因
上面字面意思是指APP試圖訪問安全隱私數(shù)據(jù),但是又沒有相應(yīng)的描述,在info.plist里包含一個鍵值為NSPhotoLibraryUsageDescription 及對應(yīng)的描述來解釋如何使用這些數(shù)據(jù)。
查詢資料發(fā)現(xiàn)是從iOS10,蘋果加強了對隱私數(shù)據(jù)的保護,要對隱私數(shù)據(jù)權(quán)限做一個適配,iOS10調(diào)用相機,訪問通訊錄,訪問相冊等都要在info.plist中加入權(quán)限訪問描述,不然之前你們的項目涉及到這些權(quán)限的地方就會直接crash掉。
解決辦法
只需要在info.plist添加NSPhotoLibraryUsageDescription的key, value自己隨意填寫就可以,這里列舉出對應(yīng)的key(Source Code模式下):
<key>NSPhotoLibraryUsageDescriptionApp</Key><value>程序需要訪問相冊,請授權(quán)</value>
對應(yīng)還有其他類型隱私類型-? 隱私數(shù)據(jù)對應(yīng)key值
通訊錄NSContactsUsageDescription
相冊NSPhotoLibraryUsageDescription
相機NSCameraUsageDescription
麥克風(fēng)NSMicrophoneUsageDescription
位置NSLocationUsageDescription
在使用期間訪問位置NSLocationWhenInUseUsageDescription
始終訪問位置NSLocationAlwaysUsageDescription
日歷NSCalendarsUsageDescription
提醒事項NSRemindersUsageDescription
運動與健身NSMotionUsageDescription
健康更新NSHealthUpdateUsageDescription
健康分享NSHealthShareUsageDescription
藍牙NSBluetoothPeripheralUsageDescription
媒體資料庫NSAppleMusicUsageDescription