2009-02-25 3 views
30

mit Wie programmatisch aus dem iPhone SDK die folgenden Aktionen:Programmatically eine Telefonnummer wählen und DTMF passieren das iPhone SDK

  • Bypass

    1. Programmatically eine Telefonnummer über das iPhone SDK Dial die dial/cancel Eingabeaufforderung, dass das iPhone erscheint

    2. Senden Sie zusätzliche DTMF, nachdem die Nummer gewählt wurde, genau so, wie Sie Pausen in ein normales Foto programmieren würden ne.

    Ich weiß, dass Sie einen tel:// Anruf tätigen können, aber das Problem ist, dass es mit dem Rad/Abbrechen Prompt bringt und nach, dass es verhindert, dass zukünftige DTMF aus gesendet werden.

  • Antwort

    30

    Das iPhone SDK gibt Ihnen keinen direkten Zugang zu den Rufnummern (stellen Sie sich vor, wenn ein 'schlechtes' Programm auf Ihr Telefon gelangt ist und eine Nummer pro Minute gewählt hat, die Sie nicht bemerkt haben).

    Wenn Sie jedoch den Tel-Link verwenden, sollten Sie in der Lage sein, "," Zeichen zu senden, die Pausen einfügen.

    So 555-1212 einwählen, dann 4 Sekunden warten, dann tun 12345 # auf der Tonwahl Sie tel verwenden würde: 5551212, 12345 #

    Check out https://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/PhoneLinks.html

    -Adam

    +0

    Das Problem mit der Methode tel: // ist, dass die Dial/Cancel-Eingabeaufforderung dazu führt, dass das iPhone alle dtmf hinter der Nummer ignoriert. Haben Sie Code, wo Sie erfolgreich Vergangenheit dtmf nach der tatsächlichen Nummer? –

    +0

    Berichte scheinen darauf hinzuweisen, dass tel: URLs von einer Webseite von diesem Problem betroffen sind, aber echte Anwendungen nicht: http://forums.macrumors.com/showthread.php?t=484177 Versuchen Sie, eine iPhone App zu erstellen, oder Webapp? –

    +0

    Dies ist eine SDK-basierte iPhone-Anwendung, aber meine ersten Tests waren um die Webseite tel: // Anrufe. Ich werde die DTMF im SDK ausprobieren –

    -1

    Sie können dies nicht tun. Mit dem SDK können Sie die Telefonfunktion in dieser Detailebene nicht steuern.

    0

    Eigentlich habe ich versucht, einfach die folgenden 555-555-4822 EXT 8030

    Und es scheint, einige Töne auch nach dem Drücken von Wahl (die Anzahl der P steht für die Anzahl der Sekunden Verzögerung) zu übertragen. Auf die Töne wird jedoch nicht wie erwartet am anderen Ende reagiert, also ist noch etwas nicht in Ordnung.

    Dies funktioniert jedoch, obwohl es ein wenig anfälliger für Timing-Probleme ist tel: 555-555-4822, 8030. Dies pausiert nur für eine Sekunde (,, wäre zwei Sekunden) nach der Verbindung und spielt dann die 8030 Töne

    2

    Per Adamsapfel Entwickler Link oben, gibt es diese RFC-Verbindung, die mehr über die verschiedenen Optionen für eine Telefonverbindung Schema, das das iPhone unterstützt erklärt -

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

    das zumindest können Sie einfügen pausiert mit einem 'p' in der URL, aber viele der Optionen sind angegeben (aber nicht alle a re erforderlich) per RFC. Was funktioniert sonst noch?

    18

    Ich weiß nicht, warum jeder sagt, Sie können nicht ... Sie CAN!

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

    Dies wird die Wahl phonenumber prompt die Wählscheibe/cancel Umgehung ...1 Sekunde nachdem der Anruf entgegengenommen wurde, wird der dtmfAfterPickup String automatisch gewählt.

    Es ist eine gute Idee zu detect whether or not the device support phone calls

    +0

    können Sie zusätzliche 1 Sekunde Pausen hinzufügen, indem Sie Kommas in die dtmfAfterPickup Zeichenfolge einfügen. NSString * dtmfAfterPickup = @ "1,2,3,4"; Dies fügt eine Pause von 1 Sekunde nach jeder Nummer hinzu. – AlBeebe

    +0

    Gibt es ein Telefongespräch über die API? –

    +1

    Im iOS-SDK ist keine Möglichkeit zum Aufzeichnen eines Telefonanrufs verfügbar. – AlBeebe

    1

    ich mit meinem iPhone versucht CoronaSDK und OpenURL-API. Es funktioniert sehr gut! Tun Sie einfach: system.openURL ("tel: [phonenumber], 123"). Sie können mehr mit zusätzlichen Kommata warten. Getestet mit Corona SDK/iOS7.