我有一个示例 iOS 10 应用程序请求对照片库的授权,并在真实设备上崩溃并出现以下崩溃错误:
PhotosAuthorizationCrashTest[2014:42551] [access] <private>
可以找到回购协议here https://github.com/Eddpt/PhotosAuthorizationCrashTest
这是请求授权的代码(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 中某些使用说明键已成为强制要求有关。
虽然NSPhotoLibraryUsageDescription
自 iOS 6 以来就已经存在,直到 iOS 10 才成为一项要求,并且崩溃消息没有太大帮助。
在最新的 Xcode(目前是 Xcode 8 beta 3)的模拟器中,崩溃消息更加详细(即使在设备上它仍然是相同的):
[访问] 此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的 Info.plist 必须包含一个 NSPhotoLibraryUsageDescription 键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。
所以添加NSPhotoLibraryUsageDescription
to my Info.plist
文件已解决该问题。
更多文档请参见可可钥匙 https://developer.apple.com/library/prerelease/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html
更具体地说,名为NSPhotoLibraryUsageDescription
:
重要提示:为了保护用户隐私,在 iOS 10.0 或之后链接并访问用户照片库的 iOS 应用程序必须静态声明这样做的意图。将 NSPhotoLibraryUsageDescription 键包含在应用程序的 Info.plist 文件中,并为此键提供用途字符串。如果您的应用程序尝试在没有相应目的字符串的情况下访问用户的照片库,您的应用程序将退出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)