2011-08-24 11 views
30

Jak zmienić dźwięk odtwarzany dla powiadomień lokalnych? Używam poniższy kod, aby odtworzyć dźwięk domyślny:Wybierz dźwięk niestandardowy dla powiadomień lokalnych.

notif.soundName = UILocalNotificationDefaultSoundName; 

Tak, próbowałem ten poniżej, i to nie działa. Co powinienem zrobić? Dzięki za pomoc!

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

Wygląda na to, że powinien zadziałać. Czy plik 'sound.caf' znajduje się w pakiecie aplikacji? – jtbandes

+0

Tak, czy formatowanie jest poprawne? Nie potrzebuję czegoś takiego jak imię: dźwięk zEnding: caf, lub podobny do tego? –

+0

Tak, dokumentacja mówi po prostu o rozszerzenie. – jtbandes

Odpowiedz

29

To powinno zadziałać. Upewnij się, że dźwięk jest rzeczywiście w pakiecie aplikacji, jest w odpowiednim formacie (liniowy PCM lub IMA4 - prawie wszędzie, gdzie wyjaśniono, jak konwertować dźwięki na iOS powie Ci, jak to zrobić), i ma mniej niż 30 sekund.

+0

Przeciągnij i upuść go do Xcode, to mniej niż trzydzieści sekund, czy CAF będzie działał? –

+2

CAF to format kontenera; nie możesz po prostu dowiedzieć się z rozszerzenia, że ​​dany CAF zawiera odpowiedni rodzaj danych. Otwórz dźwięk w Quicktime Player, naciśnij Cmd-I, aby otworzyć narzędzie Movie Inspector i sprawdź format. Dźwięk, który leżał w pobliżu powiedział, że jego format to "Linear PCM, 16 bit little-endian signed integer" itp .; jeśli plik dźwiękowy pokazuje coś innego, prawdopodobnie jest to problem. –

+0

Zamiast tego użyłem formatu IMA4 i uruchomiłem go. Dzięki za pomoc! –

37

można przekonwertować z wav i mp3 za pomocą:

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

gdzie wejdę do tego polecenia, a także czy jest możliwa konwersja w kodzie ios – srinadh

+0

afconvert to program linii poleceń, który może być używany z poziomu aplikacji powłoki w Twój macosx –

15

Próbowałem również konwertować mp3 COP przy użyciu komendy poniżej:

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

jednej lekcji tutaj: Spędziłem kilka godzin zmagają się z dźwiękiem lokalnego powiadomienia. Próbowałem konwertować z różnym bitrate i formatem. Ale w końcu odkryłem, że musi istnieć usterka z emulatorem iOS 6.1. Rozmieściłem kod na urządzenie, działa dobrze, ale na emulatorze nie ma dźwięku.

+0

Wielkie dzięki za komentarz. Zaktualizowałem zawartość, dodając moje najnowsze informacje, czego nauczyłem się tutaj. –

+0

Cieszę się, że znalazłeś rozwiązanie :-) – kleopatra

+2

plik mp3 działa, nie trzeba konwertować go do formatu pliku caf –

8

Wpadłem na wszystkie te problemy (dzięki za odpowiedzi) i udało mi się rozwiązać problem, konwertując z .wav na .caf (symulator sans 6.1). Ostatnie, czego potrzebowałem, to upewnić się, że plik .caf znajduje się w pakiecie mojej aplikacji. Aby potwierdzić/poprawić to ...

Kliknij prawym przyciskiem myszy plik w "Nawigatorze projektu", wybierz "Pokaż inspektora plików" i upewnij się, że plik ma znacznik wyboru obok twojego projektu w obszarze "Docelowe członkostwo". W moim przypadku sprawdzono tylko "LocalNotificationExampleTests". Sprawdzenie "LocalNotificationExample" naprawiło mój brak dźwięku na urządzeniu.

1

Dla Swift 3 użyć UNNotificationSound.init dla obiektu notif w funkcji planowania powiadomień.

Oto Swift 3 przykład:

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

Ostatnia uwaga, według Apple: „Plik dźwiękowy musi być zawarte w aplikacji pakietu lub w Bibliotece/Dźwięki folder kontenerze danych aplikacji. Jeśli pliki istnieją w obu lokalizacjach, preferowany będzie plik w katalogu ~/Library/Sounds. "

Powiązane problemy