web-dev-qa-db-fra.com

Passer un appel téléphonique dans une application iOS

J'ai du code qui tente de faire un appel dans une application, mais il ne semble pas fonctionner:

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

Parfois, la variable phone est quelque chose comme @"(102) 222-2222". Comment puis-je passer un appel avec un numéro de téléphone comme celui-ci? Dois-je en extraire manuellement les chiffres et me débarrasser de toute ponctuation supplémentaire?

33
CodeGuy

Ouaip. Vous devez les retirer vous-même. Ou vous pouvez utiliser l'extrait ci-dessous ...

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

Remarque: vous pourriez être tenté d'utiliser -stringByTrimmingCharactersInSet:, mais celui-ci ne supprime que les caractères au début et à la fin de la chaîne, pas s'ils apparaissent au milieu.

80
Johan Kool

Pour revenir à l'application d'origine, vous pouvez utiliser telprompt: // au lieu de tel: // - L'invite tell invitera l'utilisateur en premier, mais lorsque l'appel sera terminé, il reviendra à votre application:

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

juste une mise à jour sur la réponse ci-dessus.

23
D-eptdeveloper

Voici une méthode simple qui peut être utilisée pour passer un appel et revenir à l'application une fois l'appel terminé.

Ajoutez ce qui suit à votre fichier .m

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

Ajoutez ensuite le code suivant où vous souhaitez effectuer l'appel:

[self dialNumber:@"5031234567"];
1
Trianna Brannon