美文网首页
iOS开发 iOS 10拨打系统电话,弹出框延迟出现问题

iOS开发 iOS 10拨打系统电话,弹出框延迟出现问题

作者: 开发仔小广 | 来源:发表于2017-06-08 17:36 被阅读101次

    iOS10拨打系统电话发现弹出框会延迟2s左右出现,很不爽,研究了一下,发现是openURL在iOS 10及其之后会阻塞主线程 ,上代码:

    // 拨打电话  
    + (void)callPhone:(NSString *)phoneNum {  
          
        if (phoneNum.length == 0) {  
            return;  
        }  
    
        NSString *callPhone = [NSString stringWithFormat:@"telprompt://%@", phoneNum];
        /// 解决iOS10及其以上系统弹出拨号框延迟的问题
        /// 方案一
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
            /// 10及其以上系统
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone] options:@{} completionHandler:nil];
        } else {
            /// 10以下系统
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]];
        }
        
        /// 方案二
    //    dispatch_async(dispatch_get_global_queue(0, 0), ^{
    //        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]];
    //    });
    } 
    

    导致弹出框延迟的原因,目前初步诊断就是openURL在iOS 10及其之后会阻塞主线程;

    相关文章

      网友评论

          本文标题:iOS开发 iOS 10拨打系统电话,弹出框延迟出现问题

          本文链接:https://www.haomeiwen.com/subject/mcetqxtx.html