使用自定義聲音作為通知提示音
在 iOS 10 以後,iOS 使用了全新的
UserNotifications 作為通知 API,這允許開發者使用 圖片、視頻、聲音 等富媒體作為通知內容,同時進一步地,你還可以使用 通知內容擴展 來自定義通知的大小和內容佈局。
如果要自定義通知的提示音,那麼你可以給
UNNotificationContent 的
聲音 屬性添加
UNNotificationSound 實例:
1 2 |
let content = UNMutableNotificationContent() content.sound = UNNotificationSound(named: sound+".m4a") |
由高亮行可以看出,自定義提示音的具體位置是由 iOS 系統自動指定的。眾所周知,這些自定義的提示音必須預先放置在 app 的 主束 裡,長度不能超過 30小號,否則就會被系統提示音所替代。
那麼 ,有沒有什麼辦法,能讓 app 以用戶提供的聲音作為通知提示音呢?
使用用戶自定義的聲音作為通知提示音
用戶自定義的聲音,這裡我們指用戶從其他 app 導入的聲音、從網站上下載的聲音,或者是我們 app 自己後期從服務器下載的提示音。那麼,有沒有辦法,不把提示音預置在 app 裡,而是後期加載呢?
這一點在網絡上很少有人提及,其實是可以的。如果你去仔細閱讀官方文檔,那麼你會在這個頁面發現這樣一句話:
自定義聲音文件必須位於你的可執行文件的主束或 圖書館/聲音 您的應用程序的容器目錄的目錄.
也就是說,除了預置在 app 的 主束 里之外,我們也可以把下載的聲音放置在 圖書館/聲音 這個目錄裡!
1 2 3 4 |
let path = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask) let url = path[0].appendingPathComponent("Sounds", isDirectory: true) try? FileManager.default.createDirectory(at: url, withIntermediateDirectories: false, attributes: nil) try? FileManager.default.copyItem(atPath: --sound-path--, toPath: url.path+ --sound-name--) |
這樣一來,下載或者用戶導入的聲音就可以作為提示音使用了! ——當然,不要忘記也要遵循 30s 內這個規定。
同時,由於 api 限制,名稱最好不要重複,不然就說不好系統用哪個聲音作為提示音了。
參考文獻
UILocalNotification: 播放保存在文檔目錄自定義音頻文件
本文由 落格博客 原創撰寫:落格博客 » UserNotifications 使用用戶創建的聲音作為提示音
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/2984.html
这个你试过了吗?我用这个自定义声音不行,还是默认的声音。找你交流一下呀?