web-dev-qa-db-fra.com

Composer un numéro de téléphone avec un code d'accès par programmation dans iOS

Comment puis-je composer un numéro de téléphone qui comprend un numéro et un code d'accès par programmation dans iOS?

Par exemple:

numéro: 900-3440-567
Code d'accès: 65445

47
Shahid Aslam
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];
}
107
vijay adhikari

suivez le tutoriel

http://www.makebetterthings.com/blogs/iphone/open-phone-sms-email-map-and-browser-apps-in-iphone-sdk/

pour appeler un numéro, utilisez -

NSURL *url = [NSURL URLWithString:@"tel://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];

ouvrir votre application une fois l'appel terminé -

(Remarque: telprompt n'est pas documenté)

NSURL *url = [NSURL URLWithString:@"telprompt://012-4325-234"];
[[UIApplication sharedApplication] openURL:url];
34
saadnib

Vous pouvez composer des numéros de téléphone par programmation à l'aide de UIApplicationopenURL: méthode (voir l'exemple ci-dessous). Je ne sais pas si les codes d'accès sont pris en charge, mais c'est au moins un point de départ.

NSURL *URL = [NSURL URLWithString:@"tel://900-3440-567"];
[[UIApplication sharedApplication] openURL:URL];

Edit: Voir Apple URL Scheme Reference et IApplication Class Reference pour plus d'informations.

19
Chris Doble

Je ne sais pas si vous avez réellement trouvé une solution pour passer le code d'accès, mais pour moi, ce code a fonctionné:

NSString *dialstring = [[NSString alloc] initWithFormat:@"tel:your_phonenumber,your_accessnumber"]; 

Cela se traduira par une chaîne de numérotation avec les valeurs suivantes: tel:9003440567,65445

Les autres parties sont gérées par l'application pour téléphone d'iOS avec la commande suivante:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:dialstring]];

Le , dans la chaîne provoque une pause dans votre système téléphonique (celui où vous souhaitez accéder à une salle de conférence) juste après avoir composé le premier numéro et établi une connexion. Le système téléphonique a donc le temps de vous demander le code d'accès (je pense qu'il devrait vous le demander, c'est ainsi que fonctionne notre système). Et après cela, votre code d'accès devrait être transmis.

BE AWARE: Votre code d'accès sera transmis de manière non secrète. Par exemple: Votre code d'accès affiché sera affiché dans l'affichage de l'application du téléphone iPhone de cette façon: 9003440567, 65445

7
rubybeginner

L'utilisation de cet utilisateur peut rediriger sur appel et après l'appel, il sera automatiquement redirigé vers l'application. Cela fonctionne pour moi et j'en suis sûr.

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];
}
3
user2637900

Voici une solution autonome dans 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);
    }
  }
}

Vous devriez maintenant pouvoir utiliser callNumber("7178881234") pour effectuer un appel; J'espère que cela t'aides!

3
Zorayr

Il n'est pas possible de composer par programme un numéro de téléphone comprenant un numéro et un code d'accès.

La bibliothèque de développeurs Apple Apple donne les informations suivantes:

"... l'application Téléphone prend en charge la plupart des caractères spéciaux du schéma tel, mais pas tous. Spécifiquement, si une URL contient les caractères * ou # , l'application Téléphone n'essaie pas de composer le numéro de téléphone correspondant . "

Voir: Apple URL Scheme Reference

2
carmen_munich

Vous pouvez utiliser les URL du téléphone pour appeler l'application Téléphone pour composer un numéro pour vous. Voir ceci référence .

L'inconvénient est qu'une fois l'appel terminé, l'utilisateur se retrouvera dans l'application Téléphone. Mais je crains qu'il n'y ait pas de solution à ce problème. iOS ne permet à aucune application de lancer directement un appel pour des raisons de sécurité et de confidentialité.

Vous pouvez utiliser une virgule pour introduire des pauses lors de la composition d'un numéro.

2
Hemant

Il existe plusieurs façons de composer un numéro de téléphone et la manière décrite qui utilise:

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "tel: 555-555-5555"]

Est un moyen valable de le faire, mais il a un certain nombre de problèmes. Premièrement, il n'invite pas correctement l'utilisateur et deuxièmement, il ne ramène pas l'utilisateur à l'application lorsque l'appel téléphonique est terminé. Pour passer correctement un appel téléphonique, vous devez tous les deux demander avant l'appel afin de ne pas surprendre l'utilisateur et vous devez le ramener à l'application une fois l'appel terminé.

Ces deux opérations peuvent être effectuées sans utiliser d'API privée, comme le suggèrent certaines des réponses ici. L'approche recommandée utilise l'API Telprompt mais elle n'utilise pas l'instanciation privée de l'appel et crée à la place une vue Web permettant une compatibilité future.

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

Un exemple de projet et des informations supplémentaires sont fournis ici: http://www.raizlabs.com/dev/2014/04/getting-the-best-behavior-from-phone-call-requests-using-tel- in-an-ios-app /

1
graiz