【问题标题】:Installing drivers with Mac app - rejected by Apple review team使用 Mac 应用程序安装驱动程序 - 被 Apple 审核团队拒绝
【发布时间】:2014-05-05 00:52:40
【问题描述】:

我开发了一个 Mac 桌面应用程序,我们有一个商业理由让我们的用户安装一些驱动程序以使我们的应用程序正常工作。

由于沙盒限制,我无法获得在/Users/System Name/Library/ 文件夹中安装驱动程序的用户访问权限。 (即)它会在访问应用程序之前询问用户是否允许从单个软件包安装程序安装驱动程序以安装驱动程序。

此外,由于沙盒限制,我无法将驱动程序捆绑在一个包中来安装驱动程序和 Mac 应用程序。 这样我就必须将驱动程序和应用程序安装分开作为两步过程。

我已将该应用程序提交给 Apple 审核团队,并附有安装驱动程序的说明,然后安装 mac 应用程序以执行所需的功能。 我也详细介绍了执行这些步骤的视频。但审核组拒绝了,原因如下:

原因:

2.3:不符合开发者宣传的应用程序将被拒绝我们写信通知您,应用程序审查委员会已经 完成了他们对您的申诉的审查,并确定此版本 您的应用程序违反了指南 2.3。我们已经确定 您的应用程序要求用户下载并安装额外的 软件,以使应用程序按照宣传的方式执行。 应用程序不应要求用户安装额外的 软件才能使应用程序正常工作。我们将继续审查您的 考虑到这一点的应用程序。

状态:完成。

感谢您对 Mac 应用程序的承诺 发展。应用审查委员会。

我理解用户不应该安装额外的软件来运行应用程序,但需要知道在 Mac App Store 中提交应用程序以利用商店优势而不是在 Mac App Store 之外发布的可能方式。您的宝贵建议将有助于对此解决方案进行任何设计更改。

更新:(应用程序流程和驱动程序的角色)。

这是我的 Mac 应用程序设计和技术流程:

1.Product实际上是用于将文档存储在Server上,并将文档用于存储和云打印。我确实有两个选项可以将文档发送到云端:

a) 用户可以右键单击任何文档,将其传递给 Mac 应用程序以将文档发送到云服务器。

b) 我确实有另一个选项是从打印选项 (ctrl + P) 发送文档,我会将文档转换为通用格式以供云服务器理解。此功能将为用户带来更多价值,我也想坚持这种方法。 用户可以通过文档打印功能和mac驱动文件传递任何文档,其他支持文件很少会与MAC应用程序通信以进行进一步处理。

2.Mac App会显示上传文件列表/每个文件的状态。

驱动程序文件在处理文档格式方面有很多功能,这将有助于云计算,因此我的架构中必须有驱动程序文件并根据我的业务需求。

Mac 应用程序和驱动程序组件将使用苹果脚本进行通信以相互连接。一旦驱动组件完成了必要的步骤,它就会调用苹果脚本来调用 Mac 应用程序来执行它的功能。

【问题讨论】:

  • 驱动程序做什么,它使用哪个API?库中没有“驱动程序”文件夹。它是一个守护进程(在没有 UI 的情况下在后台运行的可执行文件)?您的 App 如何与“驱动程序”通信?插座? XPC?
  • 您没有通过 Mac App Store 分发您的应用程序。
  • @mahaltertin 我添加了一些有关应用程序流程和驱动程序的更多信息。请看一看。
  • 那么,打印将文档发送到服务器?这是相当不寻常的,我会考虑添加服务等而不是打印到服务器....
  • @Volker 感谢您的回复。是的,您是对的,我正在使用我的应用程序中的服务将文档发送到服务器。但要使应用程序正常工作,我需要在 MAC 机器上安装打印驱动程序。此打印驱动程序将生成打印文件的通用格式并包含打印的所有详细信息。我无法删除此驱动程序依赖项,因为它在我的业务需求中。

标签: macos appstore-approval mac-app-store review appstore-sandbox


【解决方案1】:

设计更改建议,应与 Mac App Store 沙盒兼容。

  • 在 App Bundle 的 Resources 目录中包含所有需要的文件。
  • 询问用户是否有可选安装以更好地与系统集成。
  • 对话框应该说“可选”,因为应用程序在没有这个的情况下也应该工作。
  • 如果用户说是,则显示一个指向~/Library/NSOpenPanel
  • 将此目录的NSURL 获取到沙箱中。
  • 将驱动程序文件从捆绑包复制到库的文件夹中

【讨论】:

  • @Mahal 谢谢你的回复。我之前的 RnD 让我明白我可以使用 PDF-Workflow,但我仍然必须通过驱动程序处理许多其他格式,这将是我的业务需求。所以想知道根据我上面的解释是否有更好的选择来讨论这个驱动程序组件和应用程序组件中的每一个?或者我会考虑用巨大的努力重新设计整个事情? .请指教。
  • 我刚刚添加了另一种方式和更多细节。但请编辑您的问题以添加详细信息:驱动程序是什么意思?您计划在驱动程序和应用程序之间进行哪些进程间通信?并且请不要用大写的Mac :-)
  • 谢谢,我在我的问题中添加了我的评论。
  • 我们在即将发布的 Raskin 中实现了类似的功能。在此处查看沙盒版本:raskinformac.com/beta
  • @2vision2 你找到解决方案了吗?如果我的回答对您有帮助,如果您可以使用左侧的复选标记将其标记为“已回答”,那就太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多