IOS13 适配遇到的部分坑

IOS13更新对于开发者来说,并不算太友好。原因有如下几点。

一、禁用私有属性通过KVC赋值。

对这一点,是分开两部分的。对于XCODE10以前的开发工具打包的安装包,这些改变私有属性的KVC方法在IOS13系统的手机上,并不会执行,就是说没有效果。而对于XCODE11以后的开发工具打包的安装包,则会自动检测,一旦发现该方法调用了KVC修改了私有属性,则会给出报错断言(如果连接了电脑真机调试),并直接闪退。

所以奉劝各位没来得及适配13的小伙伴们,尽量能保留10版本或以下的XCODE,预防直接更新后,太多崩溃导致影响到开发进程。

附上IOS13查找statusBar的方法

//IOS13新增了UIStatusBarManager属性
UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
id _statusBar = nil;
if ([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]) {
   UIView *_localStatusBar = [statusBarManager performSelector:@selector(createLocalStatusBar)];
    if ([_localStatusBar respondsToSelector:@selector(statusBar)]) {
       _statusBar = [_localStatusBar performSelector:@selector(statusBar)];
    }
}
 
这样就可以做执行view的方法,但并不能改变statusBar的背景颜色。

二、新增暗黑模式,完全适配需要进行较大UI更换。

包括图片,背景颜色,字体颜色等全方面的修改。以至于通常新版本里面并不能做到完全适配。这时候,我们有个投机的方法,直接添加代码到info.plist里面

<key>UIUserInterfaceStyle</key>
<string>Light</string>
这样可以在APP内禁用掉暗黑模式。但长远来说,苹果还是希望我们的APP会支持暗黑模式,不久的将来,会强制APP开发者去适配。

三、部分常用三方框架会导致闪退

常见有MJExtension,fishhock等三方大牛库,这个需要查找相关的临时解决方法,待三方框架更新适配。

四、蓝牙权限问题

在IOS12及以下的版本,使用蓝牙模块并不需要请求权限,所以很多线上的APP都没有加入相关请求权限信息。但因为苹果对隐私权限的进一步限制,在IOS13,就会直接闪退。这是必须等相关APP更新,也是很多果粉反馈所说,更新了IOS13以后,好多软件都直接闪退的原因。

除去上述的几大原因,还有一些零碎的方面,在这里就不陈述了。总结来说,在有条件的情况下,还是需要提前安装下一个大版本的测试版,对自家的APP做个提前的体检,以防会有重大的线上BUG出现。

PS:这次的XCODE新测试版更新的比较慢,并不能提前发现私有属性的崩溃问题。所幸只用来投机取巧改了些无关紧要的UI细节,并不会导致重大问题
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值