切换对相机和照片的访问时崩溃

Crash when toggling access to Camera and Photos

我有一个集合视图(标准流式布局),其中第一个单元格显示实时摄像头源,其余单元格使用 iOS 8 的新照片框架显示用户库中的照片。一切都呈现并运行良好。

第一次打开时,系统提示我按预期访问相机和照片库。如果我对任何一个提示 select 是或否,我的应用程序运行正常。

但是,如果我将应用置于后台,进入“设置”>“隐私”>“照片|相机”并切换访问权限,我的应用就会崩溃。当连接到 Xcode 时,我没有收到关于应用程序崩溃原因的任何反馈。

不幸的是,Apple's Photos Framework examples app 做同样的事情。

如何防止这种情况发生?我已经在 PHPhotoLibrary 上订阅了 AVCaptureDeviceWasConnectedNotificationAVCaptureDeviceWasDisconnectedNotificationregisterChangeObserver 的通知,但这些似乎从未被调用过。

同样,这里是使用 Apple 的示例应用程序和模拟器的步骤:

  1. 在模拟器中,转到“设置”>“通用”>“重置”>“重置位置和隐私”
  2. 运行 应用
  3. 允许该应用访问您的照片库
  4. 后台运行示例应用程序并打开设置
  5. 转到“隐私”>“照片”并关闭设置
  6. 观看Xcode崩溃

如果在第 3 步中拒绝访问您的照片,并在第 5 步中启用访问权限,应用程序也会崩溃。

这本身并不是崩溃。当隐私标志更改时,iOS 系统会终止所有请求访问照片库的应用程序系统(包括 Apple 系统应用程序)。

这源于 iOS 中的隐私更改 6. 查看 Privacy Support in iOS and OS X 上的 WWDC 2012 session 第 24 页。