iOS 10 开发之权限Crash 相机相册等权限的使用

升级 iOS 10 之后坑还是挺多的,以前正常使用的权限, 现在会出现crash问题

调用相机和相册的时候如果没有提示用户开启权限, 就会出现闪退

下面是调用相册时候, 没有提醒开启权限, crash的控制台输出信息:

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

这个程序已经崩溃,因为它试图访问隐私数据没有使用说明。应用程序的信息。plist必须包含一个NSPhotoLibraryUsageDescription关键字符串值向用户解释应用程序如何使用这些数据。

大意就是说, 程序崩溃的是因为访问隐私数据没有进行说明, 你需要在 info.plist 文件添加一个 NSPhotoLibraryUsageDescription的 key,然后添加一个描述。

解决方案
1.在项目中找到info.plist文件
2.添加以下键值对

  1. <key>NSPhotoLibraryUsageDescription</key>
  2. <string>此 App 需要您的同意才能读取媒体资料</string>

 

注意,key 是绝对不能写错的

而 value 也就是<string></string>你可以随意写

目测所有需要的权限描述都会在 iOS 10 beta里面crash,不用怕,控制台会有输出的,自行添加就 OK,下面是几个常用的key/value

  1. <!– 相册 –>
  2. <key>NSPhotoLibraryUsageDescription</key>
  3. <string>App需要您的同意,才能访问相册</string>
  4. <!– 相机 –>
  5. <key>NSCameraUsageDescription</key>
  6. <string>App需要您的同意,才能访问相机</string>
  7. <!– 麦克风 –>
  8. <key>NSMicrophoneUsageDescription</key>
  9. <string>App需要您的同意,才能访问麦克风</string>
  10. <!– 位置 –>
  11. <key>NSLocationUsageDescription</key>
  12. <string>App需要您的同意,才能访问位置</string>
  13. <!– 在使用期间访问位置 –>
  14. <key>NSLocationWhenInUseUsageDescription</key>
  15. <string>App需要您的同意,才能在使用期间访问位置</string>
  16. <!– 始终访问位置 –>
  17. <key>NSLocationAlwaysUsageDescription</key>
  18. <string>App需要您的同意,才能始终访问位置</string>
  19. <!– 日历 –>
  20. <key>NSCalendarsUsageDescription</key>
  21. <string>App需要您的同意,才能访问日历</string>
  22. <!– 提醒事项 –>
  23. <key>NSRemindersUsageDescription</key>
  24. <string>App需要您的同意,才能访问提醒事项</string>
  25. <!– 运动与健身 –>
  26. <key>NSMotionUsageDescription</key> <string>App需要您的同意,才能访问运动与健身</string>
  27. <!– 健康更新 –>
  28. <key>NSHealthUpdateUsageDescription</key>
  29. <string>App需要您的同意,才能访问健康更新 </string>
  30. <!– 健康分享 –>
  31. <key>NSHealthShareUsageDescription</key>
  32. <string>App需要您的同意,才能访问健康分享</string>
  33. <!– 蓝牙 –>
  34. <key>NSBluetoothPeripheralUsageDescription</key>
  35. <string>App需要您的同意,才能访问蓝牙</string>
  36. <!– 媒体资料库 –>
  37. <key>NSAppleMusicUsageDescription</key>  <string>App需要您的同意,才能访问媒体资料库</string>
  38. <key>UIBackgroundModes</key>
    <array>
    <string>location</string>
    </array>