iOS 10撥打系統(tǒng)電話彈出框延遲出現(xiàn)問題的解決
前言
最近在開發(fā)中遇到了一些問題,發(fā)現(xiàn)iOS 10撥打系統(tǒng)電話發(fā)現(xiàn)彈出框會延遲2s左右出現(xiàn),很不爽,研究了一下,發(fā)現(xiàn)是openURL在iOS 10及其之后會阻塞主線程
所以,撥打電話前,做個判斷,下面話不多說了,來一起看看詳細的介紹吧。
示例代碼:
// 撥打電話
+ (void)callPhone:(NSString *)phoneNum {
if ([ISNULL(phoneNum) length] == 0) {
[SVProgressHUD showErrorWithStatus:@"撥打失敗,手機號碼不存在" duration:1.0 dismiss:nil];
return;
}
NSString *callPhone = [NSString stringWithFormat:@"telprompt://%@", phoneNum];
/// 解決iOS10及其以上系統(tǒng)彈出撥號框延遲的問題
/// 方案一
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)于撥打電話的方法,導致彈出框延遲的原因,目前初步診斷就是openURL在iOS 10及其之后會阻塞主線程,方案二在iOS 11上不起作用
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
iOS開發(fā)存儲應(yīng)用程序Info.plist知識全面詳解
這篇文章主要為大家介紹了iOS開發(fā)存儲應(yīng)用程序Info.plist知識全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
iOS10實現(xiàn)推送功能時的注意點和問題總結(jié)
很多朋友都反饋,發(fā)現(xiàn)了iOS9升級到iOS10推送功能不正常的問題,所以這篇文章總結(jié)了一下要點,親們可以根據(jù)以下步驟,逐步排查問題,也可以逐步實現(xiàn)iOS10的推送功能。下面來一起看看吧。2016-09-09
淺述iOS11 Xcode 9 按住command 單擊 恢復(fù)到從前(直接跳轉(zhuǎn)到定義)
這篇文章主要介紹了 iOS11 Xcode 9 按住command 單擊 恢復(fù)到從前(直接跳轉(zhuǎn)到定義)的相關(guān)資料,需要的朋友可以參考下2017-10-10
iOS實現(xiàn)UIScrollView的無限輪播功能(原理)詳解
在現(xiàn)在的一些App中常常見到圖片輪播器,一般用于展示廣告、新聞等數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于iOS實現(xiàn)UIScrollView的無限輪播功能(原理)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-09-09
iOS App使用設(shè)計模式中的模板方法模式開發(fā)的示例
這篇文章主要介紹了iOS應(yīng)用使用設(shè)計模式中的模板方法模式開發(fā)的示例,例子代碼為Objective-C語言,文中還與Java的相關(guān)實現(xiàn)進行類比,需要的朋友可以參考下2016-03-03

