2

我正在考虑为 Mac App Store 创建一个应用程序,但想知道他们是否只接受使用 XCode 在 Objective-C 中制作的程序。

我正在考虑使用 Qt 使程序多平台,这样我就可以发布 Windows 和 Mac 版本。

4

2 回答 2

2

为了详细说明 Cody Gray 发布的 GUI 要求如何使非平凡的 Qt 应用程序难以被接受,请考虑一些必须实现或至少检查其正确性的 Mac 特定功能一个简单的文本编辑器:

  • 正确的键盘快捷键,包括 Cocoa 文本控件标准的 emacs 键绑定
  • 适当的菜单结构,包括:
    • 应用程序菜单中的首选项,而不是编辑或工具菜单
    • 从编辑菜单访问特殊字符工具
    • 文件菜单的“打开最近”子菜单,具有清晰的菜单条目,与 Windows 上的文件菜单中嵌入的最近文件列表相反
    • 一个适当的窗口菜单,包括“全部放在前面”项
    • 带有集成搜索框的帮助菜单
  • 关闭所有窗口/文档后应用程序保持打开状态的能力
  • 正确的停靠图标行为,包括上下文菜单中的窗口列表
  • 窗口标题栏文件图标,可以拖拽到其他应用程序上,也可以右击得到文件路径中的目录菜单,这样就可以在Finder中打开封闭文件夹

随着您查看此列表,使用跨平台工具包轻松实现该功能的可能性会降低。根据我的经验,至少有一个 Qt Mac 应用程序忽略了所有这些功能。其中一些功能可能只能通过使用非公共 API 轻松添加到 Qt。然而,这些功能中的大多数都是免费的,或者在 Cocoa 项目中实现起来几乎是微不足道的,因此它们在原生应用程序中几乎无处不在,Apple 拒绝你的应用程序是正确的,因为它们把它们搞砸了。

如果您的应用程序不平凡并且不是全屏 OpenGL 游戏,那么您最好编写具有跨平台后端的本机 GUI。另一种方法是充满#ifdefs 的代码,但仍然不能完全正确地完成工作。

于 2011-02-05T11:18:47.777 回答
1

考虑到我不代表苹果公司,也没有看到任何这场辩论支持一方或另一方的例子,所以很难给你一个明确的答案来回答这个问题。相反,我将发布类似于 Mac App Store 审查指南的相关部分的内容,让您自己决定。

首先是关于“功能”的第 2 节。这是一个相当广泛的主题领域,在我看来,使用第三方 GUI 库有很多违规的可能性。当然,如果您有足够的兴趣,我也认为所有这些都可以解决。

2.5   使用非公开 API 的应用将被拒绝

. . .

2.14   应用程序必须使用 Xcode 中包含的 Apple 打包技术打包和提交 - 不允许第三方安装程序

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

2.16   下载或安装额外代码或资源以添加功能或更改其主要用途的应用程序将被拒绝

. . .

2.24   使用已弃用或可选安装的技术(例如 Java、Rosetta)的应用程序将被拒绝。

. . .

2.29   不使用适当的 Mac OS X API 来修改其他应用程序存储的用户数据(例如书签、地址簿或日历条目)的应用程序将被拒绝

对于使用 Qt 的应用程序,关于“用户界面”的第 6 节也值得考虑。我拒绝在 Windows 上使用该库,因为它不使用标准平台 GUI 元素。我只能假设它在 Mac 上做同样的事情,Apple 将如何反应还有待观察。(我怀疑行为正确并使用本机小部件的替代跨平台 GUI 库在这里是免费且清晰的。)

6.1   应用程序必须遵守 Apple Macintosh 人机界面指南中解释的所有条款和条件

. . .

6.3   未正确使用系统提供的项目(如按钮和图标)并按照 Apple Macintosh 人机界面指南中所述的应用程序将被拒绝

. . .

6.5   改变 Mac OS X 原生用户界面元素或行为的应用程序将被拒绝

于 2011-02-05T08:23:10.873 回答