我正在尝试计划我想在Mac App Store上构建和发布的产品。
我在Go程序中有很多功能,我想在Electron应用程序中使用,理想情况下我想使用gRPC来连接它们。我担心这会被应用审核流程拒绝,任何人都可以告诉我:
我已经尝试通过阅读https://developer.apple.com/app-store/review/guidelines/来确定上述答案,但没有经验,希望你们中的一些人我无法确定。我希望避免投入大量时间来构建一个被拒绝的方式。
更新 - 进行一些进一步的研究和思考,我重新阅读了这部分App Store审核指南" 2.4.5(iii)他们可能无法自动启动或运行其他代码自动启动或未经同意登录,也不会产生在用户退出应用程序后未经同意继续运行的进程。"。
我还发现an applications Xcode bundle structure有关于' MacOS'的评论。目录:" MacOS (必需)包含应用程序的独立可执行代码。通常,此目录仅包含一个二进制文件,其中包含应用程序的主入口点和静态链接的代码。但是,您也可以在此目录中放置其他独立的可执行文件(例如命令行工具)。"
在app sandboxing entitlement guide我找到了这个" 要使您的应用能够连接到在另一台计算机上运行的服务器进程(或在同一台计算机上),启用传出网络连接。 要启用网络侦听套接字以便其他计算机可以连接到您的应用,请允许传入的网络连接。"
这意味着我可以使用TCP / gRPC但不是明确的......我将继续追逐明确的答案!
答案 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的方法应该没问题。