Hacer una llamada telefónica en una aplicación de iOS

Tengo un código que intenta realizar una llamada dentro de una aplicación, pero parece que no funciona:

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

A veces, el phone variable es algo como @"(102) 222-2222" . ¿Cómo puedo hacer una llamada con un número de teléfono como este? ¿Debo extraer manualmente los números y eliminar toda la puntuación extra?

Sip. Tienes que sacarlos tú mismo. O puede usar el fragmento a continuación …

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

Nota: puede sentirse tentado de usar -stringByTrimmingCharactersInSet: pero ese solo elimina caracteres al inicio y al final de la cadena, no si aparecen en el medio.

Para volver a la aplicación original, puede usar telprompt: // en lugar de tel: // – La indicación tell indicará al usuario primero, pero cuando la llamada finalice, volverá a su aplicación:

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

solo una actualización de la respuesta anterior.

Este es un método simple que se puede usar para realizar una llamada y regresar a la aplicación una vez que finaliza la llamada.

Agregue lo siguiente a su archivo .m

 - (void) dialNumber:(NSString*) number{ number = [@"telprompt://" stringByAppendingString:number]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:number]]; } 

A continuación, agregue el siguiente código desde donde desee realizar la llamada desde:

 [self dialNumber:@"5031234567"];