Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making a phone call in an iOS application

I have some code which attempts to make a call within an application, but it doesn't seem to be working:

    UIApplication *myApp = [UIApplication sharedApplication];     NSString *theCall = [NSString stringWithFormat:@"tel://%@",phone];     NSLog(@"making call with %@",theCall);     [myApp openURL:[NSURL URLWithString:theCall]]; 

Sometimes, the variable phone is something such as @"(102) 222-2222". How can I make a call with a phone number like this? Do I need to manually extract the numbers out of it and get rid of all the extra punctuation?

like image 695
CodeGuy Avatar asked Jun 12 '11 16:06

CodeGuy


2 Answers

Yup. You need to take those out yourself. Or you can use the snippet below...

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""]; NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]]; 

Note: you may be tempted to use -stringByTrimmingCharactersInSet:, but that one only removes characters at the start and the end of the string, not if they appear in the middle.

like image 79
Johan Kool Avatar answered Nov 08 '22 00:11

Johan Kool


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]]; 

just an update on above answer.

like image 32
D-eptdeveloper Avatar answered Nov 07 '22 23:11

D-eptdeveloper