ios - color - Marque un número de teléfono con un código de acceso mediante programación
ion-toolbar (9)
Puede marcar números de teléfono programáticamente usando el UIApplication
openURL:
(vea el ejemplo a continuación). No estoy seguro si los códigos de acceso son compatibles, pero este es al menos un punto de partida.
NSURL *URL = [NSURL URLWithString:@"tel://900-3440-567"];
[[UIApplication sharedApplication] openURL:URL];
Editar: Consulte la Referencia de esquema de URL de Apple y la Referencia de clase de aplicación de UIA para obtener más información.
¿Cómo puedo marcar un número de teléfono que incluye un número y código de acceso programáticamente en iOS?
Por ejemplo:
Número: 900-3440-567
Código de acceso: 65445
Puede usar las url de Phone para invocar la aplicación de teléfono y marcar un número por usted. Ver esta referencia
El inconveniente es que una vez que finaliza la llamada, el usuario terminará en la aplicación del teléfono. Pero me temo que no hay solución para ese problema. iOS no permite que ninguna aplicación inicie una llamada directamente por razones de seguridad y privacidad.
Puede usar una coma para introducir pausa (s) al marcar un número.
No es posible marcar programáticamente un número de teléfono que incluya número y código de acceso.
La Apple Developer Library brinda la siguiente información:
"... la aplicación de teléfono admite la mayoría, pero no todos, de los caracteres especiales en el esquema de tel. Específicamente, si una URL contiene los caracteres * o # , la aplicación del teléfono no intenta marcar el número de teléfono correspondiente ".
El uso de este usuario puede redirigir en Llamada y después de la llamada se le redirigirá automáticamente a la aplicación. Me funciona y estoy seguro de eso.
if ([[device model] isEqualToString:@"iPhone"] ) {
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:cellNameStr];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
} else {
UIAlertView *warning =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn''t support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[warning show];
}
UIDevice *device = [UIDevice currentDevice];
if ([[device model] isEqualToString:@"iPhone"] ) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:130-032-2837"]]];
} else {
UIAlertView *notPermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn''t support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[notPermitted show];
[notPermitted release];
}
Hay varias formas de marcar un número de teléfono y la forma descrita que usa:
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "tel: 555-555-5555"]
Es una forma válida de hacer esto, sin embargo, tiene una serie de problemas. En primer lugar, no indica correctamente al usuario y, en segundo lugar, no lleva al usuario de vuelta a la aplicación cuando se completa la llamada telefónica. Para realizar una llamada telefónica de manera adecuada, debe solicitarla antes de la llamada para no sorprender al usuario y debe llevar al usuario de vuelta a la aplicación una vez que se realiza la llamada.
Ambos pueden lograrse sin utilizar una API privada, como sugieren algunas de las respuestas aquí. El enfoque recomendado utiliza la api telprompt, pero no utiliza la creación de instancias privadas de la llamada y, en su lugar, crea una vista web que permite una compatibilidad futura.
+ (void)callWithString:(NSString *)phoneString
{
[self callWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneString]]];
}
+ (void)callWithURL:(NSURL *)url
{
static UIWebView *webView = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
webView = [UIWebView new];
});
[webView loadRequest:[NSURLRequest requestWithURL:url]];
}
Se proporciona un proyecto de ejemplo e información adicional aquí: http://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel-in-an- ios-app /
No sé si realmente encontraste una solución para pasar el código de acceso, pero para mí este código funcionó:
NSString *dialstring = [[NSString alloc] initWithFormat:@"tel:your_phonenumber,your_accessnumber"];
Esto dará como resultado una cadena de marcado con los siguientes valores: tel:9003440567,65445
Las partes restantes son administradas por la aplicación de teléfono de iOS con el siguiente comando:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:dialstring]];
El ,
en el hilo provoca una pausa en su sistema de teléfono (aquel en el que desea acceder a una sala de conferencias) inmediatamente después de que se marque el primer número y se establezca una conexión. Entonces, el sistema telefónico tiene tiempo para pedirle el código de acceso (creo que debería preguntarle, así es como funciona nuestro sistema). Y después de eso su código de acceso debe ser pasado.
TEN EN CUENTA : Su código de acceso será pasado de una manera no secreta. Por ejemplo: su código de acceso mostrado se mostrará en la pantalla de la aplicación del teléfono iPhone de esta manera: 9003440567, 65445
Aquí hay una solución autónoma en Swift :
private func callNumber(phoneNumber:String) {
if let phoneCallURL:NSURL = NSURL(string: "tel:///(phoneNumber)") {
let application:UIApplication = UIApplication.sharedApplication()
if (application.canOpenURL(phoneCallURL)) {
application.openURL(phoneCallURL);
}
}
}
Ahora debería poder usar callNumber("7178881234")
para hacer una llamada; ¡espero que esto ayude!
sigue el tutorial
llamar a un número de uso -
NSURL *url = [NSURL URLWithString:@"tel://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];
para abrir su aplicación después de que el uso finalizó la llamada -
(Nota: telprompt no está documentado)
NSURL *url = [NSURL URLWithString:@"telprompt://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];