近日一名开发者在博客分享了自己提交应用(基于 Electron 7 开发的 App)到 Mac App Store 的经历。
由于此应用不是采用原生开发的应用,所以这位开发者为了能成功将应用提交并通过 Mac App Store 的审核,他根据网络上的教程采用了 Electron-Packager 对应用进行打包。 不过开发者在按照教程操作后,却发现苹果的审核回复称无法打开所提交的文件。他判断是审核者无法打开来自 elektro 编辑器的文件(elektro 是开发者提交的应用),因为他没有添加用户读取和写入的权限。经过以下的调整后,他再次提交了应用。
可以看到,苹果之拒绝这款应用是因为它使用了私有框架(non-public framework)。作者不是唯一一名遇到此问题的人,于是他向苹果反馈自己目前正在使用 Electron 开发应用,但不能更改任何这些私有框架的用法。 苹果对此的回应是,当提交的应用使用或引用了私有 API 就会被拒绝。如果开发者无权访问二进制文件或不确定如何删除有问题的 API,请与服务提供商联系以获取技术支持。重点来了,被拒绝后,如果后面继续提交此应用时出现使用或隐藏私有 API 的情况,可能会导致 Apple Developer 帐户被禁用,并从 App Store 中删除所有关联的应用程序。 而这位开发者目前面临的情况是:由于调用这些 API 属于 Electron 框架的行为,并非应用执行的,而且 Electron 框架使用这些 API 已经有好几年了。但由于近期苹果更新了服务端的应用审核流程,能检测和识别出这些违反其应用审核规定的私有 API,最后导致开发者的应用无法通过审核。 苹果的这次举动不禁让人回想起当年对一些使用热更新框架的应用的“警告”。
结合此次的事件来看,其实这一切都十分符合苹果的一贯作风 —— 让所有事情可控、保证安全。开发者能用什么不能用什么都尽量在自己的控制范围内。大多数开发者使用热更新框架修复 bug,或者弄一些临时的小功能配置,这些没有问题,但总会有少数开发者借此去调用私有 API 以实现某些不当企图,这正是苹果不可控的。 因此在此次事件中,我们也就不难理解苹果为何会严厉禁止调用私有 API 的应用。 |