iphone - programa - iOS 4.2-Volver a la aplicación después de la llamada telefónica
grabador de llamadas iphone gratis (6)
Puedo iniciar con éxito una llamada telefónica dentro de mi aplicación usando lo siguiente:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
Sin embargo, ¿es posible regresar automáticamente a la aplicación una vez que la llamada telefónica ha finalizado? Parece que esto no fue posible en iPhone OS 3.0, pero espero que ahora sea posible en iOS 4.2 con multitarea (no pude encontrar ninguna información sobre esta pregunta específica para iOS 4.2).
¡Gracias de antemano por cualquier ayuda!
Con iOS 9.3.4, todas las técnicas que intento tienen control regresan a la aplicación que llama después de la llamada telefónica. ¿Ha cambiado este comportamiento recientemente? Este ejemplo es solo una versión simplificada y rápida de https://github.com/jatraiz/RZTelpromptExample :
class ViewController: UIViewController {
let phoneNumber = "7204790465"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func callWithTelPushed(sender: AnyObject) {
if let url = NSURL(string: "tel:" + self.phoneNumber) {
UIApplication.sharedApplication().openURL(url)
}
}
@IBAction func callWithTelpromptPushed(sender: AnyObject) {
if let url = NSURL(string: "telprompt:" + self.phoneNumber) {
UIApplication.sharedApplication().openURL(url)
}
}
@IBAction func callWithRZTelpromptPushed(sender: AnyObject) {
RZTelprompt.callWithString(self.phoneNumber)
}
}
Creo que el problema es que todavía está haciendo la llamada de aplicación compartida y, según el otro hilo, no es necesario agregar la vista web como parte de su jerarquía.
Tomé su código, lo modifiqué como a continuación, y funciona muy bien:
NSString *phoneStr = [NSString stringWithFormat:@"tel:%@", phoneNumber];
NSURL *phoneURL = [[NSURL alloc] initWithString:phoneStr];
// The WebView needs to be retained otherwise it won''t work.
if (!mCallWebview)
mCallWebview = [[UIWebView alloc] init];
[mCallWebview loadRequest:[NSURLRequest requestWithURL:phoneURL]];
Después de la llamada, su propia aplicación se ejecuta como antes.
Esto es definitivamente posible desde la introducción de iOS 4.0. La mejor forma de manejar esto es usar un UIWebView, cargue la URL "tel: 0123456" en WebView sin agregarla a la jerarquía de vistas. El iOS mostrará automáticamente una alerta con el número de teléfono y le pedirá al usuario que confirme presionando "Llamar".
Una vez que se completa la llamada, su aplicación volverá al primer plano automáticamente. Esto se detalla en este otro hilo: Volver al comportamiento de la aplicación después de una llamada telefónica diferente en código nativo que UIWebView
Hasta donde yo sé, porque el control se pasa al teléfono.aplicación para hacer la llamada, una vez que la llamada ha finalizado, en lo que respecta a iOS, phone.app es la aplicación actual, por lo que permanece en primer plano.
No parece haber nada que puedas hacer al respecto en este momento. Puede valer la pena solicitar una función para permitir una "llamada de teléfono modal" similar a MFMessageComposer
que le permite enviar correos electrónicos / sms dentro de su propia aplicación.
EDITAR
Puede seguir el consejo que da Frin en la respuesta a continuación, ya que contiene más información actualizada.
He dado esta respuesta en iPhone SDK: Lanzamiento de una aplicación después de finalizar la llamada . También publicaré mi código aquí. Aquí puede hacer una llamada sin cerrar su aplicación.
-(IBAction) dialNumber:(id)sender{
NSString *aPhoneNo = [@"tel://" stringByAppendingString:[itsPhoneNoArray objectAtIndex:[sender tag]]] ; NSURL *url= [NSURL URLWithString:aPhoneNo];
NSURL *url= [NSURL URLWithString:aPhoneNo];
NSString *osVersion = [[UIDevice currentDevice] systemVersion];
if ([osVersion floatValue] >= 3.1) {
UIWebView *webview = [[UIWebView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
[webview loadRequest:[NSURLRequest requestWithURL:url]];
webview.hidden = YES;
// Assume we are in a view controller and have access to self.view
[self.view addSubview:webview];
[webview release];
} else {
// On 3.0 and below, dial as usual
[[UIApplication sharedApplication] openURL: url];
}
}
Sé que la pregunta es muy antigua, pero actualmente puedes hacerlo (al menos en iOS 5) utilizando telprompt: //, como:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://123456789"]];
iPhone mostrará la confirmación de la vista de alerta y cuando finalice la llamada, su aplicación volverá a mostrarse, en lugar de la aplicación de llamadas del iPhone.