2009-10-07 8 views
6

Ci sono alcune parti della mia app che sarebbe meglio evidenziare all'utente se sono al telefono.C'è un modo per dire se la tua app viene utilizzata mentre l'utente è al telefono?

C'è una chiamata per verificare se siamo al telefono? Sfortunatamente, "call" è una parola orribile da verificare nei documenti API per ovvi motivi.

+0

Ecco lo scenario. Bob riceve una chiamata da Jill. Bob non sta utilizzando la mia applicazione quando si verifica la chiamata. Jill chiede alcune informazioni da bob memorizzate nella mia app. Bob, mentre è al telefono, preme il pulsante home, quindi esegue la mia app. A questo punto, voglio rilevare che Bob sta parlando al telefono o se Bob sta solo eseguendo l'app mentre non è al telefono. Non mi interessano le telefonate in arrivo mentre l'app è in esecuzione – Michael

+0

Grandi domande. Mi piacerebbe saperlo anche io. – Jordan

risposta

2

Il framework CoreTelephony può dirvi.

Il metodo currentCalls di CTCallCenter restituisce un insieme di chiamate cellulari attualmente attive.

0

Quando l'iPhone riceve una chiamata, l'applicazione viene chiusa. È possibile registrare un callback per gestire questo evento con garbo, vedi:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/applicationWillTerminate:

Dopo la chiamata è terminata, l'applicazione si ri-lancio.

applicazioni che appaiono per preservare il vostro stato durante una chiamata sono solo scritti bene :)


Arggh! Ho appena letto la tua domanda reale.

Non riesco a trovare, né conosco alcuna API per accedere all'applicazione del telefono. Il mio unico consiglio sarebbe che il telefono è un'applicazione come qualsiasi altra - e può pubblicare informazioni tramite il tunnel http che forniscono tutte le applicazioni.

Mi chiedo se si potrebbe semplicemente avere un pulsante "Sono al telefono" che l'utente potrebbe premere per ottenere gli stessi risultati?

2

L'applicazione non esce quando arriva una chiamata, passa a uno stato inattivo. Il seguente metodo dovrebbe essere invitato il UIApplicationDelegate:

- (void)applicationWillResignActive:(UIApplication *)application 

Questo metodo viene chiamato anche in altri casi, ad esempio quando l'iPhone è bloccato, e non avete modo di determinare se si trattasse di una chiamata in arrivo che ha causato esso.

5

Dai un'occhiata alla differenza di dimensioni tra [[UIScreen mainScreen] bounds] e [[UIScreen mainScreen] applicationFrame]. Se il diff è di 20 pixel e non stai nascondendo la barra di stato, probabilmente gli utenti non sono impegnati in una chiamata. Se la differenza è di 40 pixel, probabilmente i tuoi utenti sono impegnati in una chiamata, poiché la barra di stato verde accesa che appare durante le chiamate è circa il doppio della normale barra di stato.

Non l'ho mai fatto prima, quindi YMMV. Buona fortuna e fammi sapere se funziona!

+3

Ho pensato che questa fosse la risposta, ma il tethering fa la stessa cosa ...: O ( – Michael

Problemi correlati