30 votes

Composer un numéro de téléphone et passer des DTMF de façon programmée à l'aide du SDK iPhone

Comment faire, par programmation, ce qui suit à partir du SDK de l'iPhone :

  1. Composer un numéro de téléphone de façon programmée grâce au SDK de l'iPhone

  2. Contourner le composer / annuler que l'iPhone fait apparaître

  3. Envoyez des DTMF supplémentaires après la composition du numéro, comme vous le feriez pour programmer des pauses dans un téléphone ordinaire.

Je sais que vous pouvez faire un tel:// mais le problème est qu'il fait apparaître l'invite de composition/annulation et qu'après cela, il empêche l'envoi de tout autre DTMF.

32voto

Adam Davis Points 47683

Le SDK de l'iPhone ne vous donne PAS un accès direct aux numéros à composer (imaginez qu'un "mauvais" programme s'introduise dans votre téléphone et compose un numéro payant à la minute en sourdine pour que vous ne le remarquiez pas).

Toutefois, si vous utilisez le lien tel, vous devriez pouvoir lui envoyer les caractères "," qui insèrent des pauses.

Ainsi, pour composer le 555-1212, puis attendre 4 secondes, puis faire 12345# sur la tonalité, vous devez utiliser tel:5551212,,12345#.

Vérifiez https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html

0 votes

Le problème avec la méthode tel:// est que l'invite Dial / Cancel fait que l'iPhone ignore tout dtmf après le numéro. Avez-vous un code où vous réussissez à faire passer les dtmf après le numéro réel ?

0 votes

Les rapports semblent indiquer que les urls tel : d'une page web souffrent de ce problème, mais les applications réelles ne le font pas : forums.macrumors.com/showthread.php?t=484177 Essayez-vous de créer une application iPhone ou une application Web ?

0 votes

Il s'agit d'une application iPhone basée sur le SDK, mais mes premiers tests ont porté sur les appels tel:// de la page web. Je vais essayer le DTMF dans le SDK.

18voto

AlBeebe Points 3273

Je ne sais pas pourquoi tout le monde dit que tu ne peux pas... Tu... CAN !

NSString *phoneNumber = @"15555551212";
NSString *dtmfAfterPickup = @"1234";
NSString *telString = [NSString stringWithFormat:@"tel:%@,%@", phoneNumber, dtmfAfterPickup];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:telString]];

Cela permettra de composer le numéro de téléphone contourner l'invite de composition/annulation... 1 seconde après la prise de l'appel, le dtmfAfterPickup sera automatiquement composé.

C'est une bonne idée de détecter si l'appareil supporte ou non les appels téléphoniques

0 votes

Vous pouvez ajouter des pauses supplémentaires d'une seconde en insérant des virgules dans la chaîne dtmfAfterPickup. NSString *dtmfAfterPickup = @ "1,2,3,4" ; Ceci ajoutera une pause d'une seconde après chaque numéro.

0 votes

Est-il possible d'enregistrer une conversation téléphonique à l'aide de l'API ?

1 votes

Aucun moyen d'enregistrer un appel téléphonique n'est disponible dans le SDK iOS

2voto

Selon le lien d'Adam vers le développeur Apple ci-dessus, il y a ce lien RFC qui explique plus en détail les différentes options pour un schéma de liaison téléphonique que l'iPhone supporte -.

http://www.ietf.org/rfc/rfc2806.txt

Cela vous permet au moins d'insérer des pauses avec un 'p' dans l'URL, mais la plupart des options sont spécifiées (mais pas toutes sont requises) par la RFC. Quoi d'autre fonctionne ?

1voto

Rockford Points 1

J'ai essayé avec mon iPhone en utilisant CoronaSDK et l'API openurl. Cela fonctionne très bien ! Il suffit de faire : system.openURL("tel :[phonenumber],123"). Vous pouvez attendre plus avec des virgules additionnelles. Testé avec Corona SDK / iOS7.

0voto

En fait, je viens d'essayer le numéro suivant 555-555-4822 EXT 8030

Et il semble bien transmettre certaines tonalités même après avoir appuyé sur le bouton de sélection (le nombre de p représente le nombre de secondes de retard). Cependant, les tonalités ne répondent pas à l'autre extrémité comme prévu, donc quelque chose ne va pas.

Cette méthode fonctionne cependant, bien qu'elle soit un peu plus sujette aux problèmes de synchronisation. Tel : 555-555-4822, 8030. Cela ne fait qu'une pause d'une seconde (,, serait deux secondes) après la connexion, puis joue les tonalités du 8030.

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