iOS15 及其以上系统,首次装包聊天页面点击加号按钮或者点击图片按钮申请相册权限,会卡死的情况

问题原因:

iOS15 系统有了更严格的相册权限控制,在没有相册权限就调用相册接口的时候,iOS15 系统内部会发生崩溃,然后进入一个死循环,大约 10s ~ 50s 才能走出来,这段时间内线程是卡死的。给了相册权限之后就一切正常。

修复版本:

Dev 版本:

5.1.7 及其以后版本(5.1.7 于 2021.12.14 发布)

Stable 版本:

5.1.3.8 及其以后的 5.1.3.x 版本 (5.1.3.8 于 2021.12.21 发布)

4.1.1.11 及其以后的 4.1.1.x 版本 (4.1.1.11 预计于 2022.1.13 发布)

不升级 SDK 的解决方案:

一、针对点击“相册”按钮卡死的版本。

重写聊天页面的点击扩展按钮的方法,通过 tag 判断出现是点击了 相册 按钮,app 主动申请相册权限之后再调用父类接口进入相册 RCConversationViewController类

RCConversationViewController的子类中重写下面方法:

 - (void)pluginBoardView:(RCPluginBoardView *)pluginBoardView clickedItemWithTag:(NSInteger)tag {
            
        switch (tag) {  
            
             case PLUGIN_BOARD_ITEM_ALBUM_TAG: {       
                  if (@available(iOS 14.0, *)) {     
                           
                        [PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite 
                                                                   handler:^(PHAuthorizationStatus status) {
                               dispatch_async(dispatch_get_main_queue(), ^{   
                                     [super pluginBoardView:pluginBoardView clickedItemWithTag:tag];
                                });
                         }];
                      }else{
                           [super pluginBoardView:pluginBoardView clickedItemWithTag:tag];  
                      
                       } 
                  }break;
                  
                  default:      
                        [super pluginBoardView:pluginBoardView clickedItemWithTag:tag];        
                   break;
        }
   }

二、针对 4.x 版本 SDK,点击 加号按钮 卡死的情况。(4.1.1.6以及之前版本)

权限修改.zip