2011-02-08 158 views
124

如何在iPhone上以編程方式撥打電話?我試着下面的代碼,但什麼都沒有發生:以編程方式撥打電話

NSString *phoneNumber = mymobileNO.titleLabel.text; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 
+2

在swift中的代碼,你可以按照這個答案 http://stackoverflow.com/a/29869456/3950397 – 2015-04-27 10:36:34

回答

179

也許mymobileNO.titleLabel.text值不包括方案電話://

您的代碼應該是這樣的:

NSString *phoneNumber = [@"tel://" stringByAppendingString:mymobileNO.titleLabel.text]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 
+3

我們沒有機會用這種方法回到原始應用程序。 – 2011-10-30 10:58:04

+4

我認爲梅隆的方法更好,因爲它首先提示用戶,然後在通話後返回到您的應用程序。只需確保使用canOpenURL:並回退到tel:提示符,因爲telprompt不是官方的,可以在未來的iOS版本中刪除。 – 2014-01-10 00:56:00

+0

如何從蘋果手錶撥打電話? – 2015-11-22 07:16:02

214

要返回原來的應用程序,你可以使用telprompt://而不是電話:// - 在訴說提示首先會提示用戶,但是當通話結束後它會回到你的AP電話號碼:

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 
8

如果使用Xamarin開發iOS應用程序,這裏是C#相當於讓你的應用程序中的一個電話:

string phoneNumber = "1231231234"; 
NSUrl url = new NSUrl(string.Format(@"telprompt://{0}", phoneNumber)); 
UIApplication.SharedApplication.OpenUrl(url); 
3

Java的RoboVM相當於:

public void dial(String number) 
{ 
    NSURL url = new NSURL("tel://" + number); 
    UIApplication.getSharedApplication().openURL(url); 
} 
6

這裏的答案是完美的。我只是將Craig Mellon的答案轉換爲Swift。如果有人來尋求迅速的答案,這將幫助他們。

var phoneNumber: String = "telprompt://".stringByAppendingString(titleLabel.text!) // titleLabel.text has the phone number. 
     UIApplication.sharedApplication().openURL(NSURL(string:phoneNumber)!) 
19

合併@Cristian拉杜和@Craig梅隆,並從@ joel.d註釋的答案,你應該做的:

NSString *phoneNumber = mymobileNO.titleLabel.text; 
NSURL *phoneUrl = [NSURL URLWithString:[@"telprompt://" stringByAppendingString:phoneNumber]]; 
NSURL *phoneFallbackUrl = [NSURL URLWithString:[@"tel://" stringByAppendingString:phoneNumber]]; 

if ([UIApplication.sharedApplication canOpenURL:phoneUrl]) { 
    [UIApplication.sharedApplication openURL:phoneUrl]; 
} else if ([UIApplication.sharedApplication canOpenURL:phoneFallbackUrl]) { 
    [UIApplication.sharedApplication openURL:phoneFallbackUrl]; 
} else { 
    // Show an error message: Your device can not do phone calls. 
} 

這將首先嚐試使用「telprompt:/ /「URL,如果失敗,它將使用」tel://「URL。如果兩者均失敗,則嘗試在iPad或iPod Touch上撥打電話。

1
let phone = "tel://\("1234567890")"; 
let url:NSURL = NSURL(string:phone)!; 
UIApplication.sharedApplication().openURL(url); 
2

斯威夫特3

let phoneNumber: String = "tel://3124235234" 
UIApplication.shared.openURL(URL(string: phoneNumber)!) 
2

嘗試了上述斯威夫特3選擇,但它沒有工作。我認爲你需要下面的,如果你是對的iOS 10+斯威夫特上運行3:

斯威夫特3(iOS版10+):

let phoneNumber = mymobileNO.titleLabel.text  
UIApplication.shared.open(URL(string: phoneNumber)!, options: [:], completionHandler: nil) 
0

在雨燕3.0,

static func callToNumber(number:String) { 

     let phoneFallback = "telprompt://\(number)" 
     let fallbackURl = URL(string:phoneFallback)! 

     let phone = "tel://\(number)" 
     let url = URL(string:phone)! 

     let shared = UIApplication.shared 

     if(shared.canOpenURL(fallbackURl)){ 
      shared.openURL(fallbackURl) 
     }else if (shared.canOpenURL(url)){ 
      shared.openURL(url) 
     }else{ 
      print("unable to open url for call") 
     } 

    } 
相關問題