iOS撥打電話有三種方法姨蟋。
第一種:
NSMutableString *str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
第二種:
NSMutableString *str2=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"186xxxx6979"];
UIWebView* callWebview =[[UIWebView alloc] init];
[callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str2]]];
[self.view addSubview:callWebview];
第三種:
NSMutableString *str3=[[NSMutableString alloc] initWithFormat:@"telprompt://%@",@"186xxxx6979"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str3]];
三種方法優(yōu)缺點:
網(wǎng)上有解釋為第一種打完電話留在打電話界面钝腺,第二種打完電話回到原來的app
真實測試:兩種打完電話都是回到原來的app界面起胰,
方法一:在iOS10.2之前沒問題括授,沒有提示直接撥打谊迄,但是在iOS10.2后新增彈出提示窑多,彈出提示有延遲哮独。修改方法有幾種
1. 調用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str] options:@{} completionHandler:nil];這個方法但是需要判斷版本拳芙,在iOS10之后才用。10之前用原來的?[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
2.關于撥打電話的方法皮璧,自己憑喜好選擇舟扎,導致彈出框延遲的原因,目前初步診斷就是openURL在iOS 10及其之后會阻塞主線程
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"18511089439"];
dispatch_async(dispatch_get_global_queue(0,0), ^{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
});
方法二:點擊有提示悴务。但是照此方法寫的會不停創(chuàng)建webview睹限。應當聲明一個web譬猫,每次都調用同一個以節(jié)省資源
方法三:點擊有提示。用這個的時候要小心羡疗,因為apple的文檔里邊沒出現(xiàn)過telprompt這個染服。之前是有過被reject的案例。
總結:推薦第二種叨恨,都是在第一種延遲取消后柳刮,還是可以用第一種的