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]];
    }

结果:无卡顿上报,解决。

上一篇 下一篇

猜你喜欢

热点阅读