2009-03-20 16 views

Respuesta

113

Puede iniciar una llamada

https://developer.apple.com/library/content/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html

Así que esto probablemente funcionaría

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:12125551212"]]; 
+0

Hice lo que sugeriste, pero en el simulador de iphone no pasó nada. al igual que Forze. ¿No debería cerrar la aplicación y el teléfono comienza a marcar? – LolaRun

+24

El simulador no tiene teléfono. Verifíquelo en el dispositivo. –

+1

@LouFranco Gracias por la pista que me ayudó – shox

-1

Esto tampoco ser muy específico de la plataforma, o usted tendrá que usar una biblioteca envoltorio de tenga en cuenta las diferencias entre las plataformas, por lo que es mejor indicar a qué plataforma está destinada. En general, hay varias API de telefonía disponibles en la mayoría de las plataformas.

En los sistemas Windows existe, por ejemplo, el "TAPI", también pueden diferir en algo si se dirige a un sistema telefónico digital como ISDN, porque hay otras API disponibles.

+1

La pregunta sí especificó Objective-C, que en este caso _probably_ significa iOS – powerj1984

10

bien si se está hablando acerca del uso de Objective-C para hacer una llamada de teléfono en el iPhone, entonces usted puede hacer algo como esto:

NSURL *phoneNumber = [[NSURL alloc] initWithString: @"tel:867-5309"]; 
[[UIApplication sharedApplication] openURL: phoneNumber]; 

Si están hablando de hacer esto en un Mac, así , como otros, han mencionado que es específico en función de varias cosas como, si está utilizando VoIP, un módem, se conecta a través de un cuadro de Asteriscos, etc.

22

Esto está recortado de un proyecto que hice para hacer solo eso:

NSString *phoneStr = [[NSString alloc] initWithFormat:@"tel:%@",phone_number]; 
NSURL *phoneURL = [[NSURL alloc] initWithString:phoneStr]; 
[[UIApplication sharedApplication] openURL:phoneURL]; 
[phoneURL release]; 
[phoneStr release]; 
+1

Utilice la liberación automática a menos que tenga alguna razón para no hacerlo. También puedes usar 'stringWithFormat' que ya te da un objeto liberado automáticamente. –

+2

@Yar - De hecho, evite la liberación automática a menos que tenga una razón para no hacerlo. – Abizern

+0

@Abizern, ¿por qué? ¿Te preocupa la memoria o el rendimiento general? Hasta que obtengamos ARC (que ya estamos recibiendo en iOS) o un gc (como en MacOS), la liberación automática hace que el código sea mucho más limpio y casi sin gastos generales. A menos que esté en un ciclo largo, yo (y muchas otras personas, puedo citar eso si lo desea) creo que es preferible la liberación automática. –

17

También puede ser útil saber cómo solicitar al usuario que llame a un número:

NSURL *phoneNumber = [NSURL URLWithString:@"telprompt://13232222222"]; 
[[UIApplication sharedApplication] openURL:phoneNumber]; 

telprompt da al usuario una opción para realizar la llamada o cancelar la realización de la llamada antes de que el teléfono marca. Las dos barras diagonales posteriores a los dos puntos son opcionales.

0
NSString *phoneNumber = @"Phone number here"; 
UIWebView *webView = [[UIWebView alloc] init]; 
NSURL *url = [NSURL URLWithString:numberString];   
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; 
webView.dataDetectorTypes = UIDataDetectorTypeNone; 
[webView loadRequest:requestURL]; 
3

quitar espacios VACÍOS EN NÚMERO DE TELÉFONO

NSString *phoneNumberString = @"123 456"; 
phoneNumberString = [phoneNumberString stringByReplacingOccurrencesOfString:@" " withString:@""]; 
phoneNumberString = [NSString [email protected]"tel:%@", phoneNumberString]; 
NSURL *phoneNumberURL = [NSURL URLWithString:phoneNumberString]]; 
[[UIApplication sharedApplication] openURL:phoneNumberURL]; 
2

openURL está en desuso.

Ahora usa esto:

UIApplication *application = [UIApplication sharedApplication]; 
[application openURL:[NSURL URLWithString: @"tel:12125551212"] options:@{} completionHandler:nil]; 
Cuestiones relacionadas