iOS 拨打电话卡顿问题解决
2020-03-03 本文已影响0人
FieryDragon
通过bugly日志卡顿分析发现有很多日志显示在拨打电话时有卡顿现象,通过分析发现卡顿设备为10.2以上的10.*系列系统,在网上查了一些解决方法,也遇到一些坑,在此将解决方式做个记录,希望能帮助遇到相同问题的同学。
卡顿修改前拨打电话代码
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:+86%@",tel];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
原因:
在iOS10.2之前没问题,没有提示直接拨打,但是在iOS10.2后新增弹出提示,弹出提示有延迟。
第一种解决方式:
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:+86%@",tel];
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
});
结果:卡顿现象有所下降,但是仍有卡顿上报。
第二种解决方法:
调用iOS10.0以后新增方法 openURL:options:completionHandler:
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:+86%@",tel];
if (@available(iOS 10.0, *)) {
/// 10.0以上系统使用此方法
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str] options:@{} completionHandler:nil];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}
结果:无卡顿上报,解决。