我有一个示例iOS 10应用程序请求授权照片库并在真实设备上崩溃,并出现以下崩溃错误:
PhotosAuthorizationCrashTest[2014:42551] [access] <private>
回购可以在这里找到
这是请求授权的代码(Swift 3.0):
private func requestAuthorizationIfNeeded() {
DispatchQueue.main.async {
let status = PHPhotoLibrary.authorizationStatus()
if status == .authorized {
return
}
PHPhotoLibrary.requestAuthorization({ (status) in
if status == .authorized {
return
}
NSLog("Could not get authorization to access photos")
})
}
}
Run Code Online (Sandbox Code Playgroud)
我发现这个问题与一些使用说明密钥在iOS 10中已成为强制性的事实有关.
尽管NSPhotoLibraryUsageDescription自iOS 6以来一直存在,但它只是iOS 10中的一项要求,而且崩溃消息并不是很有帮助.
在最新Xcode(此时为Xcode 8 beta 3)的模拟器中,崩溃消息更加详细(即使在设备上它仍然是相同的):
[access]此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
所以添加NSPhotoLibraryUsageDescription到我的Info.plist文件已修复该问题.
有关更多文档,请参阅Cocoa Keys
更具体地说,该部分名为NSPhotoLibraryUsageDescription:
重要提示:为了保护用户隐私,iOS 10.0上或之后链接的iOS应用程序访问用户的照片库,必须静态声明这样做的意图.在应用的Info.plist文件中包含NSPhotoLibraryUsageDescription键,并为此密钥提供目的字符串.如果您的应用尝试访问用户的照片库而没有相应的用途字符串,则您的应用会退出.
| 归档时间: |
|
| 查看次数: |
3541 次 |
| 最近记录: |