Domanda

Come potrei fare una chiamata dall'interno di un'applicazione o lanciare un'applicazione subito dopo il termine della chiamata? So che questo è possibile perché alcune applicazioni in App Store lo stanno già facendo.

È stato utile?

Soluzione

Ho ottenuto questo codice dal sito di Apple e funziona perfettamente:

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


}

Altri suggerimenti

Credo che ci sono due parti a questo

  1. L'applicazione è già in esecuzione, e l'utente riceve una richiesta che indica una telefonata è in arrivo, e ha chiesto di accettare o rifiutare
  2. L'utente riceve una telefonata, ma l'applicazione non è in esecuzione

Nel primo caso, il UIApplicationDelegate riceverà i messaggi application:willChangeStatusBarFrame:, application:didChangeStatusBarFrame:, applicationWillResignActive: e applicationDidBecomeActive: tutti potenzialmente più volte tutti a seconda se l'utente decide di rispondere alla chiamata o no, e forse applicationWillTerminate: se scelgono di lasciare la vostra applicazione o meno. È inoltre possibile osservare questi eventi utilizzando il NSNotificationCenter da una classe che non è registrato come il delegato applicazione, vedere la sezione '' della UIApplication di riferimento di classe per i dettagli.

Nel secondo caso, non lo so non c'è via con l'SDK ufficiale per lanciare la vostra applicazione quando una telefonata finisce. Potrebbe fornire un elenco delle applicazioni che fanno questo?

EDIT:

Credo di capire cosa vuoi dire ora. Si dovrebbe seguire il consiglio dal @jessecurry, il openURL su UIApplication con un protocollo tel: farà una telefonata. Per quanto riguarda la loro pretesa di "fare l'impossibile" e non smettere l'applicazione quando la telefonata è fatta, io non sono sicuro di come lo hanno fatto perché non ho scritto io. Potrebbero essere utilizzando un servizio VoIP come Skype esterna, o semplicemente caricando l'URL tel: all'interno di un foglio Web invisibile. Nessuno dei quali posso commentare perché non ho provato.

Si è fatto utilizzando telprompt invece di tel. si prega di guardare il seguente codice

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

se si desidera effettuare una chiamata da dentro la vostra applicazione è possibile utilizzare un URL tel:.

Ecco un metodo che accetta un numero di telefono come una stringa e avvia una chiamata.

- (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];
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top