【问题标题】:Enabling sound with Xcode 'sandbox'ed application使用 Xcode 的“沙盒”应用程序启用声音
【发布时间】:2013-10-31 13:40:02
【问题描述】:

我有一个播放 MIDI 声音的应用程序。 该应用程序在没有沙盒的情况下工作正常,并播放它应该播放的声音,但是当我启用沙盒时我无法在此处播放声音。

我需要将应用程序上传到 mac 应用商店,但我不能这样做,因为我无法获得声音。

当我启用沙盒时,我也无法打开文件对话框。 有什么办法至少可以在应用中启用声音吗?

【问题讨论】:

  • 声音文件必须在应用程序包中,否则沙盒会阻止您访问它。您需要至少将“用户选择的文件”选项启用为Read Only,以允许访问文件系统上用户选择的文件。请read the sandboxing guide详细说明。
  • 你提到这一点很有趣。我已经使用读/写选项启用了“用户选择的文件”。我将使用沙盒设置的屏幕截图更新问题。
  • 您是否查看过在具有文件活动工具的工具下运行的应用程序?它会告诉您在没有沙箱时它需要什么,并且可能会提示您如何继续使其在沙箱下工作。 midi 支持需要访问声音字体文件等来制作任何音频,因此在沙箱中可能会阻止访问这些文件。此外,midi 文件支持未内置到任何支持沙盒的 mac os x 版本。
  • 基于link from another website,听起来您可能需要更多权利让应用程序在沙盒中运行
  • 您提供的那个链接对我来说非常有效,我还没有真正在仪器中查找我的应用程序,但我认为探索它是个好主意。无论如何,非常感谢。我将在答案中添加此链接。干杯。

标签: c++ xcode macos appstore-approval appstore-sandbox


【解决方案1】:

正如 Petesh 在上面的 cmets 中所说,我必须在权利文件中添加更多条目, 他在上面给出的链接包含以下内容。您将它们添加到您的权利文件中,一切都将开始像魅力一样开始工作。

这个允许您的应用程序访问麦克风。

com.apple.security.device.microphone

这允许与协调所有应用程序的所有 Midi 功能的 MIDI 服务器通信。

com.apple.security.temporary-exception.mach-lookup.global-name

这允许与本身没有沙盒的音频组件进行对话。

com.apple.security.temporary-exception.audio-unit-host

他们为我工作。

【讨论】:

  • 我只是担心“临时异常”这个词可能意味着他们将来会停止工作
  • 当我尝试打开文件对话框时得到2013-10-23 20:53:02.128 my_app[555:303] Exception raised!: NSNavOpenPanel is not a supported subclass for sandboxing。有没有其他选择,我对mac比较新,我们在我们的应用程序中使用了碳。
  • 好吧,谢谢,我会尝试,并发布结果。 :) 干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
相关资源
最近更新 更多