Make a phone call programmatically Make a phone call programmatically ios ios

Make a phone call programmatically


To go back to original app you can use telprompt:// instead of tel:// - The tell prompt will prompt the user first, but when the call is finished it will go back to your app:

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


Probably the mymobileNO.titleLabel.text value doesn't include the scheme //

Your code should look like this:

ObjectiveC

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

Swift

if let url = URL(string: "tel://\(mymobileNO.titleLabel.text))") {    UIApplication.shared.open(url)}


Merging the answers of @Cristian Radu and @Craig Mellon, and the comment from @joel.d, you should do:

NSURL *urlOption1 = [NSURL URLWithString:[@"telprompt://" stringByAppendingString:phone]];NSURL *urlOption2 = [NSURL URLWithString:[@"tel://" stringByAppendingString:phone]];NSURL *targetURL = nil;if ([UIApplication.sharedApplication canOpenURL:urlOption1]) {    targetURL = urlOption1;} else if ([UIApplication.sharedApplication canOpenURL:urlOption2]) {    targetURL = urlOption2;}if (targetURL) {    if (@available(iOS 10.0, *)) {        [UIApplication.sharedApplication openURL:targetURL options:@{} completionHandler:nil];    } else {#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wdeprecated-declarations"        [UIApplication.sharedApplication openURL:targetURL];#pragma clang diagnostic pop    }} 

This will first try to use the "telprompt://" URL, and if that fails, it will use the "tel://" URL. If both fails, you're trying to place a phone call on an iPad or iPod Touch.

Swift Version :

let phone = mymobileNO.titleLabel.textlet phoneUrl = URL(string: "telprompt://\(phone)"let phoneFallbackUrl = URL(string: "tel://\(phone)"if(phoneUrl != nil && UIApplication.shared.canOpenUrl(phoneUrl!)) {  UIApplication.shared.open(phoneUrl!, options:[String:Any]()) { (success) in    if(!success) {      // Show an error message: Failed opening the url    }  }} else if(phoneFallbackUrl != nil && UIApplication.shared.canOpenUrl(phoneFallbackUrl!)) {  UIApplication.shared.open(phoneFallbackUrl!, options:[String:Any]()) { (success) in    if(!success) {      // Show an error message: Failed opening the url    }  }} else {    // Show an error message: Your device can not do phone calls.}