2011-05-09 93 views
5

我正在使用以下代碼撥打電話號碼並使用我的設備進行測試。看來沒有確認是必要的,對嗎?iOS中的撥號號碼確實需要確認嗎?

NSURL *url = [NSURL URLWithString:@"tel://12345678"]; 
[[UIApplication sharedApplication] openURL:url]; 
+0

請更改接受的答案,因爲第二種解決方案是這樣清潔劑(如本地化的消息),我沒有上注意到它時間:) – yonix 2013-05-18 12:16:37

回答

14

確認不是必需的,並且在以編程方式完成時不顯示。如果單擊一個數字,您將只能在Safari中看到alertView。

但是,根據我自己的經驗,我認爲客戶看到對話框會更方便,以免他們不小心打電話給某人。人們只是在應用程序中挖掘事物,甚至沒有想到,在這種情況下可能會很糟糕。

要模仿什麼Safari瀏覽器也可以做這樣的事情:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Call 12345678?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Call", nil]; 
[alert show]; 
alert.tag = 1; 
[alert release]; 

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    switch (alertView.tag) { 
     case 1: 
      if (buttonIndex == 1) { 
       NSURL *url = [NSURL URLWithString:@"tel://12345678"]; 
       [[UIApplication sharedApplication] openURL:url]; 
      } 
      break; 
     default: 
      break; 
    } 
} 
+0

感謝您編輯Bavarious! – shabbirv 2011-05-09 07:31:58

+0

您確定'+ [UIApplication sharedLibrary]方法存在嗎? – 2011-05-10 02:08:25

+0

它應該是'[UIApplication sharedApplication]'。 – cduck 2011-12-17 01:43:40

18

到合適的解決方案的替代已經發布,你可以考慮使用telprompt URL方案,例如

NSURL *url = [NSURL [email protected]"telprompt://12345678"]; 
[[UIApplication sharedApplication] openURL:url]; 
+1

+1雖然完全沒有文檔,但在我的測試中,它似乎一直回到iOS 3.0。 – 2011-07-08 17:54:09

+0

偉大的解決方案! +1謝謝! – dredful 2012-03-08 22:17:50

0

確認不是必需的,但它是可取的,因爲它防止用戶被放入撥號應用程序時發生混淆。你可以做的一件事是另一個答案提出的是使用telprompt而不是電話。這將通過一個簡單的對話框提供必要的提示。在通話結束後,它還有一個非常好的副作用,即讓用戶回到呼叫應用程序。這些關鍵元素使您可以繼續前進,而不是被踢出應用程序。

的一類,進一步解釋了這個代碼和一個示例項目,請訪問: http://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel-in-an-ios-app/