ios11崩溃

新版本上线没过久, 在友盟就看到了不少崩溃,具体的调用堆栈找不到,一步步的排查问题, 经过几个小时的观察发现只有 ios11 出现这个崩溃,
立即想到是 ios 11 兼容的问题,最终发现是将图片保存到系统相册权限问题.

ios 11 新加 NSPhotoLibraryAddUsageDescription ,官方原文:

NSPhotoLibraryAddUsageDescription (String - iOS) This key lets you describe the reason your app seeks write-only access to the user’s photo library.
NSPhotoLibraryUsageDescription (String - iOS) This key lets you describe the reason your app accesses the user’s photo library.
Although NSPhotoLibraryUsageDescription governs read and write access to the user’s photo library, it’s best to use NSPhotoLibraryAddUsageDescription if your app needs only to add assets to the library and does not need to read any assets.

一句话概括 : 相册读写权限,

NSPhotoLibraryUsageDescription

ios 11 : 新加权限 , 只有相册写入权限,没有读的权限 (如果你只需要保存图片到相册,不需要从相册读取图片的话)

NSPhotoLibraryAddUsageDescription 

举个例子:
1.一个新的用户使用你的 app , 在 ios 11中, 如果先保存图片到相册则会使用 NSPhotoLibraryAddUsageDescription(写入权限) ,之后再访问相册图片,则会使用 NSPhotoLibraryUsageDescription (读写权限)也就是说用户一共收到两个 权限弹框.

2.一个新的用户使用你的 app , 在 ios 11中, 如果先访问相册图片 ,则会使用 NSPhotoLibraryUsageDescription(读写) 权限 ,用户点击确定 , 之后再保存图片到相册,不会有弹窗 .
也就是说用户一共收到一个 权限弹框.

使用 xcode 8 打包 , 不加 NSPhotoLibraryAddUsageDescription 没什么问题 ,不会崩溃!

xcode 9 打包,如果旧版本已经给过读写相册权限,不会崩溃. 如果没给过,直接崩溃.
因此使用 xcode 9 打包 ,必须添加 NSPhotoLibraryAddUsageDescription 权限. 旧的权限 NSPhotoLibraryUsageDescription 也一定不要删除

总结一下 : xcode 9 打包 info.plist 一定要有以下两个权限才能访问相册.

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>需要您的同意才能获取照片</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>需要您的同意才能获取照片</string>

友盟错误信息 : (XXXX 为公司项目名称)(没什么有用的信息.)

Application received signal SIGABRT
(null)
((
    0 CoreFoundation 0x0000000180fb1d1c <redacted> + 148
    1 libobjc.A.dylib 0x0000000180200528 objc_exception_throw + 56
    2 CoreFoundation 0x0000000180fb1c4c <redacted> + 0
    3 XXXX 0x1003b6dacXXXX + 3894700
    4 libsystem_platform.dylib 0x0000000180bd7b34 _sigtramp + 36
    5 libsystem_kernel.dylib 0x0000000180ac3100 <redacted> + 100
    6 libsystem_kernel.dylib 0x0000000180ac312c system_set_sfi_window + 0
    7 TCC 0x0000000183a21980 <redacted> + 0
    8 TCC 0x0000000183a218a0 <redacted> + 0
    9 TCC 0x0000000183a2513c <redacted> + 316
    10 libxpc.dylib 0x0000000180c15ee0 <redacted> + 60
    11 libxpc.dylib 0x0000000180c15e1c <redacted> + 88
    12 libdispatch.dylib 0x0000000180935758 <redacted> + 16
    13 libdispatch.dylib 0x000000018094d060 <redacted> + 324
    14 libdispatch.dylib 0x000000018093bf54 <redacted> + 400
    15 libdispatch.dylib 0x00000001809421c8 <redacted> + 596
    16 libdispatch.dylib 0x0000000180941f10 <redacted> + 120
    17 libsystem_pthread.dylib 0x0000000180bdb120 _pthread_wqthread + 1268
    18 libsystem_pthread.dylib 0x0000000180bdac20 start_wqthread + 4
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值