Frage

Wie würde ich einen Anruf von innerhalb einer App oder starten Sie eine App direkt nach dem Anruf beendet? Ich weiß, dass dies möglich ist, weil einige Apps im App Store sind bereits dies zu tun.

War es hilfreich?

Lösung

Ich habe diesen Code von Apple-Website und es funktioniert perfekt:

-(IBAction) dialNumber:(id)sender{

NSString *aPhoneNo = [@"tel://" stringByAppendingString:[itsPhoneNoArray objectAtIndex:[sender tag]]] ; NSURL *url= [NSURL URLWithString:aPhoneNo];
 NSURL  *url= [NSURL URLWithString:aPhoneNo];
NSString *osVersion = [[UIDevice currentDevice] systemVersion];

if ([osVersion floatValue] >= 3.1) { 
UIWebView *webview = [[UIWebView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
[webview loadRequest:[NSURLRequest requestWithURL:url]]; 
webview.hidden = YES; 
// Assume we are in a view controller and have access to self.view 
[self.view addSubview:webview]; 
[webview release]; 
} else { 
// On 3.0 and below, dial as usual 
[[UIApplication sharedApplication] openURL: url];
}


}

Andere Tipps

Ich denke, es gibt zwei Teile dieses

  1. Die Anwendung bereits ausgeführt wird, und der Benutzer erhält eine Aufforderung anzeigt, ein Anruf hereinkommt, und gebeten, zu akzeptieren oder abzulehnen
  2. Der Benutzer erhält einen Anruf, aber die Anwendung wird nicht ausgeführt

Im ersten Fall, der UIApplication Klassenreferenz für weitere Details.

Im zweiten Fall, ich weiß nicht, es ist weg mit dem offiziellen SDK Ihre Anwendung, wenn ein Anruf endet zu starten. Könnten Sie eine Liste der Anwendungen, die dies tun?

EDIT:

Ich glaube, ich verstehe, was Sie jetzt bedeuten. Sie sollten den Rat von @jessecurry, die openURL auf UIApplication mit einem tel: Protokoll folgen einen Anruf tätigen. Was ihre Behauptung „das Unmögliche zu tun“ und die App nicht verlassen, wenn der Anruf gemacht wird, bin ich nicht sicher, wie sie es taten, weil ich es nicht schreiben. Sie konnten einen externen VoIP-Dienst wie Skype verwenden, oder einfach das Laden der tel: URL in einer unsichtbaren websheet. Keiner von denen kann ich kommentieren, weil ich es nicht versucht haben.

Es wird durch die Verwendung telprompt statt tel getan. schauen Sie bitte auf den folgenden Code

[[UIApplication shared]      openURL: [NSURL URLWithString: @ "telprompt: 18004912200"]];

Wenn Sie möchten, dass Sie einen Anruf tätigen aus Ihrer App können Sie eine tel: url verwenden.

Dies ist eine Methode, die eine Telefonnummer als String nimmt und leitet einen Anruf.

- (void)dialNumber: (NSString*)telNumber
{
    // fix telNumber NSString
    NSArray* telComponents = [telNumber componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
    telNumber = [telComponents componentsJoinedByString: @""];

    NSString* urlString = [NSString stringWithFormat: @"tel:%@", telNumber];
    NSURL* telURL = [NSURL URLWithString: urlString];
    //NSLog( @"Attempting to dial %@ with urlString: %@ and URL: %@", telNumber, urlString, telURL );

    if ( [[UIApplication sharedApplication] canOpenURL: telURL] )
    {
        [[UIApplication sharedApplication] openURL: telURL];
    }
    else
    {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle: NSLocalizedString( @"Dialer Error", @"" ) 
                                                        message: [NSString stringWithFormat: NSLocalizedString( @"There was a problem dialing %@.", @"" ), telNumber] 
                                                       delegate: nil 
                                              cancelButtonTitle: NSLocalizedString( @"OK", @"" ) 
                                              otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top