前言
最近在開(kāi)發(fā)中遇到了一些問(wèn)題,發(fā)現(xiàn)iOS 10撥打系統(tǒng)電話發(fā)現(xiàn)彈出框會(huì)ios/209892.html">延遲2s左右出現(xiàn),很不爽,研究了一下,發(fā)現(xiàn)是openURL在iOS 10及其之后會(huì)阻塞主線程
所以,撥打電話前,做個(gè)判斷,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
示例代碼:
// 撥打電話 + (void)callPhone:(NSString *)phoneNum { if ([ISNULL(phoneNum) length] == 0) { [SVProgressHUD showErrorWithStatus:@"撥打失敗,手機(jī)號(hào)碼不存在" duration:1.0 dismiss:nil]; return; } NSString *callPhone = [NSString stringWithFormat:@"telprompt://%@", phoneNum]; /// 解決iOS10及其以上系統(tǒng)彈出撥號(hào)框延遲的問(wèn)題 /// 方案一 if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) { /// 10及其以上系統(tǒng) [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone] options:@{} completionHandler:nil]; } else { /// 10以下系統(tǒng) [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]]; } /// 方案二 // dispatch_async(dispatch_get_global_queue(0, 0), ^{ // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]]; // }); } 關(guān)于撥打電話的方法,導(dǎo)致彈出框延遲的原因,目前初步診斷就是openURL在iOS 10及其之后會(huì)阻塞主線程,方案二在iOS 11上不起作用
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注