【问题标题】:NSUserNotification Custom Sound (OS X, Sandboxed App)NSUserNotification 自定义声音(OS X,沙盒应用)
【发布时间】:2016-03-31 20:32:18
【问题描述】:

我想为通知中心使用自定义声音,但找不到太多关于此的文档。我知道如何为通知分配声音,并且我知道如何将新声音文件复制到 ~/Library/Sounds 然后使用这些新声音。我的应用是沙盒化的,所以我当然必须要求用户确认他们想要安装新声音,但我担心 App Store 会根据这条 App Store 规则拒绝:

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

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

好像有 documentation for this on iOS,但对于 OS X 没有。

提前致谢。

【问题讨论】:

  • NSNotificationNSNotificationCenter 与 OS X UI 中的通知中心(从右侧滑入的东西)无关。它们与声音无关。您大概在谈论NSUserNotificationNSUserNotificationCenter

标签: macos cocoa nsusernotification nsusernotificationcenter


【解决方案1】:

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

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

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

【讨论】:

  • 不幸的是,这似乎不起作用。然而,这应该是答案。我可以使用 NSSound soundNamed: 来播放声音,但是当尝试在 NSUserNotification 上使用相同的声音时,没有任何播放。我假设这是 OS X 中的一个错误。我可以改变通知声音的唯一方法是将自定义声音复制到 ~/Library/Sounds 中。
  • 现在,我将使用以下代码手动播放自定义声音:[[NSSound soundNamed:[self.prefsNotifSoundButton titleOfSelectedItem]] play];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2018-08-13
相关资源
最近更新 更多