33 votes

iOS 4.2 - Revenir à l'application après un appel téléphonique

Je peux passer avec succès un appel téléphonique dans mon application en utilisant les éléments suivants:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
 

Cependant, est-il possible de revenir automatiquement à l'application une fois l'appel terminé? Il semble que cela n’était pas possible sous iPhone OS 3.0, mais j’espère que c’est désormais possible sous iOS 4.2 avec multitâche (je n’ai trouvé aucune information sur cette question spécifique à iOS 4.2).

Merci d'avance pour toute aide!

121voto

frin Points 1876

Je sais que la question est très ancienne, mais actuellement, vous pouvez le faire (au moins sur iOS 5) en utilisant telprompt: //, comme:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://123456789"]];
 

L'iPhone affichera une confirmation de la vue d'alerte et à la fin de l'appel, votre application s'affichera à nouveau, au lieu de l'application d'appel de l'iPhone.

7voto

Luke Points 3103

Pour autant que je suis au courant, parce que le contrôle est passé au téléphone.app pour faire l'appel, une fois que l'appel est terminé, autant que iOS est concerné téléphone.app est l'application actuelle ainsi que de séjours dans le premier plan.

Il ne semble pas être quelque chose que vous pouvez faire à ce sujet pour le moment. Il pourrait être intéressant de mettre dans une demande de fonctionnalité pour permettre un "modal appel", similaire à l' MFMessageComposer qui vous permet d'envoyer des e-mails/sms au sein de votre propre application.

MODIFIER

Vous pouvez suivre les conseils qui Frin donne la réponse ci-dessous contient plus d'informations à jour.

6voto

Loz Points 51

Je pense que le problème est que vous passez toujours l'appel sharedApplication et, comme pour l'autre fil, il n'est pas nécessaire d'ajouter la vue Web dans votre hiérarchie.

J'ai pris votre code, modifié comme ci-dessous, et cela fonctionne très 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]]; 
 

Après l'appel, votre propre application fonctionne comme avant.

3voto

ekscrypto Points 522

C'est définitivement possible depuis l'introduction de l'iOS 4.0. La meilleure façon de gérer cela est d'utiliser une UIWebView, la charge de la "tél:0123456" URL dans la WebView sans ajouter à la vue de la hiérarchie. L'iOS affiche automatiquement une alerte avec le numéro de téléphone et demander à l'utilisateur de confirmer en appuyant sur la touche "Appel".

Une fois l'appel terminé, votre application sera ramené à l'avant-plan automatiquement. Ceci est détaillé dans cet autre fil: Retour à l'app comportement après l'appel téléphonique différents dans le code natif de UIWebView

2voto

Dilip Rajkumar Points 3162

J'ai donné cette réponse dans iPhone SDK: Lancer une application une fois l'appel terminé, je posterai également mon code ici .. ici, vous pouvez passer un appel sans fermer votre application ..

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


}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X