为 UILocalNotification 播放系统声音

play system sound for UILocalNotification

我在 GitHub 上找到了这个项目:iOS Sounds and Ringtones

有没有办法为 localNotification.soundName 播放其中一种声音?

所以我得到了 "/Library/RingtonesApex.m4r"

的字符串

但它仍然播放默认的通知声音。

为您的 UILocalNotification soundName 设置 属性

UILocalNotification *localNoti = [UILocalNotification alloc] init];
localNoti.soundName = @"your sound with file format (exmpl.m4r)";

并确保您的声音不超过 30 秒。这是声音长度的极限 希望这有帮助

UILocalNotification 只接受声音文件名,不接受文件路径。 soundName 的文档解释说这个文件必须是 "...在应用程序的主包中..."。获取系统声音文件的路径对 UILocalNotification 没有用,因为该文件不在您的应用程序的主包中,并且因为您不能告诉 UILocalNotification 去别的地方看。

我把你链接到的 repo 写在了原来的 post 中。

不幸的是,您不能在 localNotification 中引用声音的路径。您必须在应用程序包中包含该文件(即附加到您的应用程序的 .MP3 文件)才能将其用作自定义声音。

当然可以,您只需要将您需要的自定义声音移动到此路径即可: Library/Sounds ,默认情况下 Sounds 文件夹不在库下,所以你需要创建它,然后将任何自定义声音文件(下载到文档后复制或复制系统声音)复制到这个目录,如我所说 Library/Sounds。根据 Apple 的说法,声音文件应该捆绑在一起(以防随应用程序一起提供)或仅在这个目录中 Library/Sounds 。在 iOS 10 之前和 iOS 10 之后,您可以在本地通知中仅将具有任何扩展名的声音文件名分配给声音名称 属性,您可以将 ti 分配给内容声音名称构造函数。我之前尝试过几次,都通过从远程服务器播放声音或系统声音来处理本地和远程通知。如果您需要任何帮助使其在任何 swift 版本或 objective-c 中工作,不客气。