Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NSUserNotification自定义声音(OS X、沙盒应用程序)_Macos_Cocoa_Nsusernotification_Nsusernotificationcenter - Fatal编程技术网

Macos NSUserNotification自定义声音(OS X、沙盒应用程序)

Macos NSUserNotification自定义声音(OS X、沙盒应用程序),macos,cocoa,nsusernotification,nsusernotificationcenter,Macos,Cocoa,Nsusernotification,Nsusernotificationcenter,我想为NotificationCenter使用自定义声音,但找不到关于此的很多文档。我知道如何为通知分配声音,我知道如何将新声音文件复制到~/Library/Sounds,然后使用这些新声音。我的应用程序是沙盒式的,因此我当然必须要求用户确认他们想要安装新的声音,但我担心基于此应用程序商店规则的应用程序商店拒绝: 2.15 应用程序必须是自包含的单个应用程序安装包,并且不能在共享位置安装代码或资源 无论如何,是否可以在不将资源复制到~/Library/Sounds的情况下,将自定义声音与NSUs

我想为NotificationCenter使用自定义声音,但找不到关于此的很多文档。我知道如何为通知分配声音,我知道如何将新声音文件复制到~/Library/Sounds,然后使用这些新声音。我的应用程序是沙盒式的,因此我当然必须要求用户确认他们想要安装新的声音,但我担心基于此应用程序商店规则的应用程序商店拒绝:

2.15 应用程序必须是自包含的单个应用程序安装包,并且不能在共享位置安装代码或资源

无论如何,是否可以在不将资源复制到~/Library/Sounds的情况下,将自定义声音与NSUserNotification一起使用

似乎有,但OSX没有


提前感谢。

标题中声明
NSUserNotification
类的
soundName
属性的注释如下(添加了强调):

发送通知时要播放的应用程序包资源中声音文件的名称。NSUserNotificationDefaultSoundName可用于播放默认通知中心声音。“nil”值表示没有声音


因此,您只需在应用程序包的资源中发送一个声音文件,并将其名称用于用户通知的
soundName
。几乎可以肯定,这类似于,因此您应该传递文件名减去文件扩展名。

NSNotification
NSNotificationCenter
与OS X UI中的通知中心(从右侧滑入的东西)无关。它们与声音无关。您可能正在谈论
nssernotification
nssernotificationcenter
。不幸的是,这似乎不起作用。然而,这应该是答案。我可以使用NSSound SoundName:播放声音,但当尝试在NSUserNotification上使用相同的声音时,不会播放任何声音。我假设这是OS X中的一个错误。唯一可以更改通知声音的方法是将自定义声音复制到~/Library/sounds中。现在,我只需要使用以下内容手动播放自定义声音:
[[NSSound soundNamed:[self.prefsNotifSoundButton titleOfSelectedItem]]play]