iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問(wèn)題的解決
前言
最近在開發(fā)中遇到了一些問(wèn)題,發(fā)現(xiàn)iOS 10撥打系統(tǒng)電話發(fā)現(xiàn)彈出框會(huì)延遲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ì)腳本之家的支持。
相關(guān)文章
iOS開發(fā)存儲(chǔ)應(yīng)用程序Info.plist知識(shí)全面詳解
這篇文章主要為大家介紹了iOS開發(fā)存儲(chǔ)應(yīng)用程序Info.plist知識(shí)全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
iOS10實(shí)現(xiàn)推送功能時(shí)的注意點(diǎn)和問(wèn)題總結(jié)
很多朋友都反饋,發(fā)現(xiàn)了iOS9升級(jí)到iOS10推送功能不正常的問(wèn)題,所以這篇文章總結(jié)了一下要點(diǎn),親們可以根據(jù)以下步驟,逐步排查問(wèn)題,也可以逐步實(shí)現(xiàn)iOS10的推送功能。下面來(lái)一起看看吧。2016-09-09
淺述iOS11 Xcode 9 按住command 單擊 恢復(fù)到從前(直接跳轉(zhuǎn)到定義)
這篇文章主要介紹了 iOS11 Xcode 9 按住command 單擊 恢復(fù)到從前(直接跳轉(zhuǎn)到定義)的相關(guān)資料,需要的朋友可以參考下2017-10-10
iOS實(shí)現(xiàn)UIScrollView的無(wú)限輪播功能(原理)詳解
在現(xiàn)在的一些App中常常見(jiàn)到圖片輪播器,一般用于展示廣告、新聞等數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)UIScrollView的無(wú)限輪播功能(原理)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09
iOS App使用設(shè)計(jì)模式中的模板方法模式開發(fā)的示例
這篇文章主要介紹了iOS應(yīng)用使用設(shè)計(jì)模式中的模板方法模式開發(fā)的示例,例子代碼為Objective-C語(yǔ)言,文中還與Java的相關(guān)實(shí)現(xiàn)進(jìn)行類比,需要的朋友可以參考下2016-03-03

