崩溃请求授权给iOS 10中的照片库

我有一个示例iOS 10应用程序请求授权到照片库和崩溃在一个真实的设备上有以下崩溃错误:

PhotosAuthorizationCrashTest[2014:42551] [access] <private>

回购可以在这里find

这是请求授权的代码(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") }) } } 

我发现这个问题与iOS 10中的某些使用说明键已经成为强制性的事实有关。

尽pipeNSPhotoLibraryUsageDescription自从iOS 6开始就已经出现,但它只是成为了iOS 10的一个需求,而且崩溃消息并不是很有帮助。

在最新的Xcode(目前的Xcode 8 beta 3)的模拟器中,崩溃消息更为详细,(即使在一个设备上它仍然是一样的):

[访问]此应用程序已崩溃,因为它试图访问隐私敏感的数据没有使用说明。 应用程序的Info.plist必须包含一个带有string值的NSPhotoLibraryUsageDescription项,向用户解释应用程序如何使用这些数据。

所以添加NSPhotoLibraryUsageDescription到我的Info.plist文件已经解决了这个问题。

有关更多文档,请参阅Cocoa Keys

更具体地说,名为NSPhotoLibraryUsageDescription的部分:

重要提示:为保护用户隐私,在iOS 10.0或之后链接的iOS应用程序以及访问用户照片库的iOS应用程序必须静态声明这样做的意图。 在应用程序的Info.plist文件中包含NSPhotoLibraryUsageDescription项并提供此项的用途string。 如果你的应用程序试图访问用户的照片库没有相应的目的string,你的应用程序退出。