2011-08-24 16 views
30

Come si modifica l'audio riprodotto per le notifiche locali? Io uso il codice qui sotto per riprodurre il suono predefinito:Scegli audio personalizzato per le notifiche locali

notif.soundName = UILocalNotificationDefaultSoundName; 

Quindi, ho provato questo di seguito, e non ha funzionato. Cosa dovrei fare? Grazie per l'aiuto!

notif.soundName = @"sound.caf"; 
+0

Sembra che dovrebbe funzionare. 'Sound.caf' nel pacchetto di applicazioni? – jtbandes

+0

Sì, la formattazione è corretta? Non ho bisogno di qualcosa di simile al nome: sound withEnding: caf, o simile a quello? –

+0

Sì, la documentazione dice di includere solo l'estensione. – jtbandes

risposta

29

Che dovrebbe funzionare. Assicurati che il suono sia effettivamente nel bundle della tua app, sia nel formato corretto (lineare PCM o IMA4) praticamente ovunque che spieghi come convertire i suoni per iOS ti dirà come farlo), ed è inferiore a 30 secondi.

+0

Trascinarlo e rilasciarlo in Xcode, è meno di trenta secondi, funzionerà CAF? –

+2

CAF è un formato contenitore; non puoi sapere solo dall'estensione che un determinato CAF contiene il giusto tipo di dati. Apri l'audio in Quicktime Player, premi Cmd-I per aprire Movie Inspector e controlla il formato. Un suono che avevo in giro diceva che il suo formato era "Linear PCM, 16 bit little-endian signed integer" ecc .; se il tuo file audio mostra qualcosa di diverso da quello, probabilmente è questo il problema. –

+0

Ho invece usato il formato IMA4 e l'ho fatto funzionare. Grazie per l'aiuto! –

37

È possibile convertire da wav e mp3 utilizzando:

afconvert -f caff -d [email protected] -c 1 in.wav out.caf 
+0

dove inserirò il comando ed è anche possibile convertire in codice ios – srinadh

+0

afconvert è un programma da riga di comando che può essere utilizzato dall'applicazione shell in your macosx –

15

Ho anche provato a convertire mp3 in caf utilizzando il comando di seguito:

afconvert clockalarm.mp3 clockalarm.caf -d ima4 -f caff -v 

Una lezione qui: ho passato diverse ore per lottare con il suono della notifica locale. Ho cercato di convertire con diversi bitrate e formato. Ma alla fine ho scoperto che ci deve essere un difetto con l'emulatore iOS 6.1. Ho implementato il codice sul dispositivo, funziona bene, ma su emulatore, non ha alcun suono.

+0

Grazie mille per il tuo commento. Ho aggiornato il contenuto per includere le mie ultime informazioni, la mia lezione appresa qui. –

+0

contento che tu abbia trovato una soluzione :-) – kleopatra

+2

il file mp3 funziona, non è necessario convertirlo in formato di file caf –

8

Mi sono imbattuto in tutti questi problemi (grazie per le risposte) ed è stato in grado di risolvere il problema convertendo da .wav a .caf (sans 6.1 simulator). L'ultimo bit di cui avevo bisogno era di assicurarmi che il .caf fosse nel pacchetto della mia app. Per confermare/correggere questo ...

Fare clic con il pulsante destro del mouse su "Project Navigator", selezionare "Mostra controllo file" e accertarsi che il file abbia un segno di spunta accanto al progetto nell'area "Appartenenza di destinazione". Nel mio caso "LocalNotificationExampleTests" era l'unico elemento controllato. Il controllo "LocalNotificationExample" ha corretto la mancanza di audio sul dispositivo.

1

Per Swift 3 utilizzare UNNotificationSound.init per l'oggetto notif nella funzione di pianificazione della notifica.

Ecco un esempio Swift 3:

func scheduleNotifications(inSeconds: TimeInterval, completion: @escaping (_ Success: Bool) ->()){ 
     ... 
     notif.sound = UNNotificationSound.init(named: "CustomSound.mp3") 
     ... 
} 

Nota finale, secondo Apple: "Il file audio deve essere contenuta in bundle dell'app o in biblioteca/Suoni cartella contenitore di dati dell'app. Se i file esistono in entrambe le posizioni, verrà preferito il file in ~/Library/Sounds. "

Problemi correlati