我可以使用Mac App Store应用程序提交Go程序吗?

时间:2017-09-19 18:12:03

标签: macos go electron grpc mac-app-store

我正在尝试计划我想在Mac App Store上构建和发布的产品。

我在Go程序中有很多功能,我想在Electron应用程序中使用,理想情况下我想使用gRPC来连接它们。我担心这会被应用审核流程拒绝,任何人都可以告诉我:

  1. 是否可以让您的主应用程序“拨打电话”#39;捆绑的Go程序?
  2. 如果是,我会被限制在stdin / stdout(我担心使用gRPC我的Go程序必须在启动时运行而且可能不被允许)?
  3. 我已经尝试通过阅读https://developer.apple.com/app-store/review/guidelines/来确定上述答案,但没有经验,希望你们中的一些人我无法确定。我希望避免投入大量时间来构建一个被拒绝的方式。

    编辑/更新:

    更新 - 进行一些进一步的研究和思考,我重新阅读了这部分App Store审核指南" 2.4.5(iii)他们可能无法自动启动或运行其他代码自动启动或未经同意登录,也不会产生在用户退出应用程序后未经同意继续运行的进程。"。

    • 看着它,"其他代码"我会运行会同意(作为应用程序包结构/包的一部分),我会设计它,以便在用户退出应用程序时关闭。

    我还发现an applications Xcode bundle structure有关于' MacOS'的评论。目录:" MacOS (必需)包含应用程序的独立可执行代码。通常,此目录仅包含一个二进制文件,其中包含应用程序的主入口点和静态链接的代码。但是,您也可以在此目录中放置其他独立的可执行文件(例如命令行工具)。"

    • 所以,看起来我的问题第1部分已经回答,但是我仍然不清楚我的问题的第2部分。

    编辑/更新2:

    app sandboxing entitlement guide我找到了这个" 要使您的应用能够连接到在另一台计算机上运行的服务器进程(或在同一台计算机上),启用传出网络连接。 要启用网络侦听套接字以便其他计算机可以连接到您的应用,请允许传入的网络连接。"

    这意味着我可以使用TCP / gRPC但不是明确的......我将继续追逐明确的答案!

1 个答案:

答案 0 :(得分:1)

是。没有理由你不能提交使用go代码的应用程序 - 请参阅ios应用商店中的常春藤计算器(其规则甚至比mac应用商店更严格):

https://itunes.apple.com/us/app/ivy-big-number-calculator/id1012116478?mt=8

因此它不必是单独的二进制文件,您可以使用cgo例如使用C绑定调用Go代码。以下是Go的x平台UI库列表,其中一些使用电子。

https://github.com/avelino/awesome-go#gui

您还可以在为特定操作生成的应用程序中使用单独的命令行工具,只要在关闭应用程序后它不会继续运行。 OS X上的许多应用程序都包含命令行工具,因此您的工具可以进入,然后应用程序就可以调用它。

您不允许做的是在提交后更改代码,或者运行与应用程序分开的后台进程,而不会在应用程序关闭时执行。

或者您可以将大部分应用程序驻留在服务器上(使用go编写),并让应用程序查询该服务器以获取响应 - 这样可以让您在使用服务器的各种平台时保留Go中的大部分代码每个平台上的瘦包装器(例如mac os,ios,android) - 如果你认为它可行,这可能值得考虑,因为它可以让你在go,中完成大部分工作让您的应用程序轻松更新所有平台,而无需通过各种应用程序商店的看门人。如果你想到一个电子应用程序,并且应用程序依赖于来自网络的信息,那么这是可能的。

这在很大程度上取决于你的应用程序的性质以及它最适合哪种方法,但你勾勒出go app的方法应该没问题。