2011-08-24 37 views
30

Làm cách nào để thay đổi âm thanh phát cho thông báo địa phương? Tôi sử dụng mã bên dưới để phát âm thanh mặc định:Chọn âm thanh tùy chỉnh cho thông báo địa phương

notif.soundName = UILocalNotificationDefaultSoundName; 

Vì vậy, tôi đã thử điều này bên dưới và không hoạt động. Tôi nên làm gì? Cảm ơn bạn đã giúp đỡ!

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

Có vẻ như nó sẽ hoạt động. Có phải 'sound.caf' trong gói ứng dụng của bạn không? – jtbandes

+0

Có, định dạng có chính xác không? Tôi không cần một cái gì đó như tên: âm thanh withEnding: caf, hoặc tương tự như vậy? –

+0

Có, tài liệu hướng dẫn chỉ bao gồm phần mở rộng. – jtbandes

Trả lời

29

Điều đó sẽ hiệu quả. Đảm bảo âm thanh thực sự nằm trong gói ứng dụng của bạn, có định dạng chính xác (PCM tuyến tính hoặc IMA4 — ở mọi nơi giải thích cách chuyển đổi âm thanh cho iOS sẽ cho bạn biết cách thực hiện điều đó) và dưới 30 giây.

+0

Kéo và thả nó vào Xcode, dưới 30 giây, CAF có hoạt động không? –

+2

CAF là định dạng vùng chứa; bạn không thể biết ngay từ phần mở rộng mà một CAF đã cho chứa đúng loại dữ liệu. Mở âm thanh trong Quicktime Player, nhấn Cmd-I để mở Movie Inspector và kiểm tra định dạng. Một âm thanh tôi đã nói dối xung quanh cho biết định dạng của nó là “Linear PCM, 16 bit little-endian signed integer” vv; nếu tập tin âm thanh của bạn cho thấy một cái gì đó khác hơn, đó có thể là vấn đề. –

+0

Tôi thay vì sử dụng định dạng IMA4 và làm cho nó hoạt động. Cảm ơn bạn đã giúp đỡ! –

37

Bạn có thể chuyển đổi từ wav và mp3 sử dụng:

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

nơi tôi sẽ nhập lệnh đó và cũng có thể chuyển đổi trong mã ios – srinadh

+0

afconvert là một chương trình dòng lệnh có thể được sử dụng từ ứng dụng vỏ trong macosx của bạn –

15

Tôi cũng đã cố gắng để chuyển đổi mp3 sang caf sử dụng lệnh dưới đây:

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

Một bài học ở đây: Tôi đã dành vài giờ để đấu tranh với âm thanh của thông báo địa phương. Đã cố gắng chuyển đổi với bitrate và định dạng khác nhau. Nhưng cuối cùng tôi thấy rằng phải có một khiếm khuyết với giả lập iOS 6.1. Tôi đã triển khai mã cho thiết bị, nó hoạt động tốt, nhưng trên trình mô phỏng, không có bất kỳ âm thanh nào.

+0

Cảm ơn rất nhiều vì bình luận của bạn. Tôi đã cập nhật nội dung để bao gồm thông tin mới nhất của mình, bài học của tôi đã được học ở đây. –

+0

vui vì bạn đã tìm thấy một giải pháp :-) – kleopatra

+2

tệp mp3 đang hoạt động, không cần phải chuyển đổi nó thành định dạng tệp caf –

8

Tôi gặp phải tất cả các sự cố này (cảm ơn câu trả lời) và có thể giải quyết vấn đề bằng cách chuyển đổi từ .wav sang .caf (sans 6.1 simulator). Bit cuối cùng tôi cần là đảm bảo tệp .caf nằm trong gói ứng dụng của tôi. Để xác nhận/sửa lỗi này ...

Nhấp chuột phải vào tệp trong "Project Navigator", chọn "Show File Inspector" và đảm bảo tệp có dấu kiểm bên cạnh dự án của bạn trong khu vực "Target Membership". Trong trường hợp của tôi "LocalNotificationExampleTests" là mục duy nhất được chọn. Kiểm tra "LocalNotificationExample" đã khắc phục sự thiếu âm thanh của tôi trên thiết bị.

1

Đối với Swift 3 sử dụng UNNotificationSound.init cho đối tượng notif trong chức năng lập lịch thông báo.

Dưới đây là một ví dụ Swift 3:

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

Cuối cùng lưu ý, theo Apple: "Các tập tin âm thanh phải được chứa trong gói của ứng dụng hoặc trong thư viện/Âm thanh thư mục chứa dữ liệu của ứng dụng. Nếu tệp tồn tại ở cả hai vị trí thì tệp trong ~/Library/Sounds sẽ được ưu tiên. "

Các vấn đề liên quan