我有一个示例iOS 10应用程序请求授权照片库并在真实设备上崩溃并出现以下崩溃错误:
PhotosAuthorizationCrashTest[2014:42551] [access] <private>
可以找到回购here
这是请求授权的代码(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")
})
}
}
答案 0 :(得分:8)
我发现该问题与iOS 10中的某些使用说明密钥已成为强制性事实有关。
尽管自iOS 6以来NSPhotoLibraryUsageDescription
已经存在,但它只是iOS 10中的一项要求,而且崩溃消息并不是非常有用。
在最新的Xcode(Xcode 8 beta 3)的模拟器中,崩溃消息更加详细一些(即使在设备上它仍然是相同的):
[access]此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。该应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。
因此,将NSPhotoLibraryUsageDescription
添加到我的Info.plist
文件已修复此问题。
有关更多文档,请参阅Cocoa Keys
更具体地说,名为NSPhotoLibraryUsageDescription
的部分:
重要提示:为了保护用户隐私,iOS 10.0上或之后链接的iOS应用程序必须静态声明这样做的意图才能访问用户的照片库。在应用的Info.plist文件中包含NSPhotoLibraryUsageDescription键,并为此密钥提供目的字符串。如果您的应用尝试访问用户的照片库而没有相应的用途字符串,则您的应用会退出。