Home Code-Schnipsel Prozesse, Dienste, Threads Wie man in eine App zurückspringt wenn diese einen Anruf initiert hat

iPhone Gewinnspiel

Wie man in eine App zurückspringt wenn diese einen Anruf initiert hat PDF Drucken E-Mail
Share
Geschrieben von: Philipp   
FRIDAY, 28 JANUARY 2011 16:01
Oftmals ist es gewünscht, aus einer App herraus einen Anruf zu tätigen. In der Regel wird dabei folgender Code benutzt:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @”tel:030123456]];

Problem:
Das Problem, welches dabei jedoch auftritt ist, das der Benutzer nach der Beendigung des Anrufs nicht mehr in die App zurück wechselt, sondern in den Kontakten verbleibt.

Auf dem Weg zur Lösungsfindung, ist mir aufgefallen, das wenn der User eine Telefonnummer auf einer WebSite mittels Safari aufruft, nach dem Beenden des Anrufs in den Safari zurück gesprungen wird. Diese Eigenschaft habe ich versucht mit Hilfe von UIWebView nachzustellen – und siehe da, mit Erfolg.

Lösung:
Mit Hilfe einer kleinen Javascript Funktion funktioniert das Ganze dann auch in einer versteckten WebView. Also anstelle von[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @”tel:030123456]]; läd man nun eine WebView:


// erstellen einer versteckten webview
>NSString* phoneNumber =  @"030124567";
UIWebView* hiddenCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];

// danamisch generierte HTML-Code
// die Javascript Funktion wir direkt beim onLoad aufgerufen und tätigt einen Call
NSString* htmlCode = [NSString stringWithFormat: @"<html>"
                                                  "  <head>"
                                                  "    <script type='text/javascript'>"
                                                 
"       function call(number)" 
                                                                  
"          {"
                                                  "             window.location.href = 'tel:' + number;"  
                                                  "          }"
                                                  "    </script>"
                                                  "  </head>"
                                                  "  <body onLoad=\"call('%@')\">"
                                                  "  </body>"
                                                  "</html>", phoneNumber];
        
// laden der WebView und ausführen des Calls
[hiddenCallWebView loadHTMLString:htmlCode  baseURL:nil];

// @TODO: beim didLoad die webview wieder wegräumen

Einziges Manko: das OS wirft einen Alert mit der Frage an den User, ob dieser wirklich die Nummer xyz anrufen möchte.

Ihren Kommentar hinzufügen

Ihr Name:
Ihre Webseite:
Betreff:
Kommentar:
  Bild, welches den Sicherheitscode enthält
Sicherheitscode:
LAST_UPDATED2