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.}