2012-02-25 12 views
20

Devo creare un'app sveglia per l'iPhone in cui l'utente può impostare l'ora della sveglia e il suono. In tal modo, ho utilizzato UILocalNotification per attivare l'allarme.App sveglia in iOS

Ora, in UILocalNotification, prima viene visualizzato Avviso di notifica con l'opzione "Chiudi" e "Visualizza". Se l'utente tocca "Visualizza", il mio delegato riceve il messaggio application:didReceiveLocalNotification: e suona l'allarme.

Ma nell'app di allarme nativo del sistema, non viene visualizzato un avviso di notifica; suona direttamente il suono della sveglia. Come posso avere la mia app utilizzare questo comportamento?

risposta

3

Sono abbastanza sicuro che è possibile avere il proprio suono di notifica locale personalizzato.

codice di esempio localNotif.soundName = @"alarmsound.caf";

Nota suono di notifica locale dovrà essere di soli 30 secondi o meno per essere giocato. È possibile ottenere più info here.

5

Questo comportamento di allarme non è disponibile per le app iOS. Hai la possibilità di creare notifiche locali e aggiungere suoni a loro, ma la lunghezza del suono è limitata. Non è possibile riprodurre continuamente un suono come nell'allarme incorporato.

Un'opzione è di ripetere gli avvisi. Quindi la tua app invierà un avviso, attenderà un po 'di tempo e invierà un altro. Ripeti un numero specificato di volte o finché l'utente non interagisce con la tua app. Non penso che ciò possa fornire un'esperienza utente eccezionale, quindi non lo consiglio.

+0

Ciao, Mi sono imbattuto in questo, mentre cercavo qualcos'altro. Possiamo specificare un intervallo di tempo personalizzato per ripetere questi avvisi quando l'app è passata allo sfondo – heyjii

33

Sono d'accordo con David. L'app di allarme integrata iOS riceve un trattamento speciale da Apple per l'audio> 30 secondi in background. Sembra che utilizzi alcune API private per farle sembrare più a lungo anche quando è in background o chiusa. Questo non è disponibile per altre app sviluppate al di fuori di Apple, quindi non provare nemmeno a competere con esso. Se acquisti tutte le App sveglia nell'App Store (ovvero: approvate da Apple) e le provi una per una, noterai che mancano dietro l'app di allarme incorporata nella funzione più importante di un allarme: cioè "Suono per un lungo periodo, in qualsiasi stato l'app è attiva (in background, in background o chiusa) "

La soluzione migliore per simulare un allarme di fondo consiste nell'utilizzare UILocalNotification per 30 secondi. Se vuoi davvero svegliare il tuo sonno pesante, pianifica di attivare cinque di queste notifiche a sessanta secondi di distanza o qualcosa del genere, nella speranza che si sveglino prima della fine della quinta notifica.

Si noti che con questo metodo, il proprio utente che perde l'allarme riceverà 5 popup sullo schermo al loro risveglio (meno se si svegliano durante uno dei popup di allarme), quindi trascorreranno i primi secondi della loro mattinata chiudendo quei popup - non la migliore esperienza utente.

Conclusione: le app sveglia sono utili solo per l'uso in primo piano. La migliore app di allarme che funzionerà in qualsiasi stato è l'app Clock fatta da Apple.

+6

Sono triste nel constatarlo. –

+1

[iHome + Sleep] (https://itunes.apple.com/de/app/ihome+sleep-alarm-clock-app/id346249053?mt=8) usato per avere questo, ma in 2.9 lo hanno rimosso con il commentare "modifiche per soddisfare la conformità iOS" ... Quindi sembra che mentre è tecnicamente possibile, Apple non vuole che le app utilizzino questa funzione. Vergogna. Starò con 2.8 –

+0

Sono molto triste su questo. Il più triste di sempre. –

0

Se si abilitano le modalità di background "Audio, AirPlay e Picture in Picture" e "Notifiche remote", è possibile utilizzare una notifica push silenziosa per riattivare il dispositivo e quindi avviare la riproduzione dell'audio e fino a quando si Durante la riproduzione dell'audio non sarai limitato a 30 secondi per rispondere alla notifica come al solito. Questo non funzionerà se l'app è stata uccisa manualmente dall'utente, ma se l'utente lo fa potresti inviare una notifica locale chiedendo di riaprire l'app.