应对苹果政策,白鹭引擎助力数十家团队过审 AppStore 经验分享

2019年苹果更新了对HTML5游戏的政策,要求HTML5游戏应在 Safari浏览器中展示,而不是直接打包为 ipa 发布到 AppStore 中,对此,不少 开发者给予关注,并跟咱们咨询寻求帮助,解决他们在白鹭引擎开发的HTML5游戏发布到AppStore的问题。浏览器

在咱们白鹭完整的开发工做流产品中,使用Egret Native就能够解决就能够解决这个问题。性能优化

在最近几个月的时间中,咱们引擎团队帮助数十家开发商成功将其产品顺利经过 AppStore 新规审核,总结了一些实操经验,今天跟你们分享下, 但愿能够帮助更多的开发者朋友过审AppStore。服务器

必定不要使用 WKWebView 直接打包

这是苹果如今重点打击的目标,请开发者必定要采用 Egret Native 提供的打包方式进行打包,而不是使用 WKWebView。具体缘由是,WKWebView发布的游戏是一个运行在HTML5环境下的游戏,不符合最新的开发者规范中的4.7项。而 Egret Native 与WKWebView不一样,底层运行的是一套纯原生的、而且针对白鹭引擎进行了大量定制性能优化的渲染引擎,彻底符合苹果的开发者规范。微信

此外,咱们强烈建议您开启 EgretNative的NativeRenderer 模式,采用这种模式不只能够大幅提高您的游戏性能,并且通过实际验证,能够进一步提高AppStore的过审几率。网络

游戏代码应打包至本地而非远程下载

苹果针对应用的热更新如今提出了更严格的要求,您若是收到了苹果的拒绝邮件,而且其中明确您违反了 Guideline 2.5.2 - Performance 这一项中的 During review, your app contains the ability to download code, which is not permitted on the App Store 这一部份内容,您须要修改现有项目结构,将游戏代码应打包至本地而非远程下载,具体一个简单的验证手段以下:app

  1. 将您的测试机关掉WiFi/4G ,保持其处于无网络环境
  2. 启动您的游戏
  3. 确保在无网络环境下,您的游戏能够顺利运行,直到游戏逻辑必须须要链接网络(好比登陆游戏服务器),至少渲染出一个登陆界面,而且该界面是使用白鹭引擎渲染的而非自行添加的 iOS Native控件
  4. 游戏前30分钟的资源所有在IPA中加载,而非网络加载,网络消息只是用来进行必要的客户端服务器交互

原生代码中请不要包含任何 WKWebView

不只游戏自己不要使用 WKWebView,咱们建议您最好不要在 iOS 原生代码中包含任何的 WKWebView,由于理论上若是您包含 WKWebView,您就具有了在苹果审核后经过更换连接的方式在苹果未审核的状况下在App中添加其余功能的能力,这就违反了苹果开发者规范中的 Guideline 2.3.1 - Performance, We discovered that your app contains hidden features.这一部分。ide

针对此问题,咱们建议您能够从苹果的角度去思考,这款App从技术实现角度来看,是否具有了绕过苹果审核添加新功能的能力。举个例子,理论上您的代码里只要包含一个 WKWebView,而且这个WKWebView能够被游戏随时唤醒,理论上就具有了在苹果过审后将苹果支付修改成弹出 WebView并在其中添加微信/支付宝网页支付的能力。若是您的 App 在技术角度来看具有这样的潜力(哪怕您无心这样作),就必定不会过审。性能

确保您的代码中不包含第三方支付代码

这点问题与上一条相似,请确保您的代码(特别是遗留代码,以及接入的第三方SDK代码)中不包含第三方支付代码,不然您就违反了苹果开发者规范中的 Guideline 3.1.1 - Business - Payments - In-App Purchase We noticed that your app or its metadata enables the purchase of content, services, or functionality in the app by means other than the in-app purchase API, which is not appropriate for the App Store 这一部分。测试

在咱们进行技术支持的客户中,屡次出现过开发商接入了聚合支付SDK(通常是本身公司的其余部门编写的)中包含了微信支付/支付宝支付的代码,虽然这些代码并不会真正运行,可是仍然由于该缘由被苹果拒绝过深。微信支付

总结

从上文能够看出,苹果但愿开发者作的是:

  • 为 AppStore 提交优质的内容
  • 确保采用苹果支付

苹果禁止开发者作的是:

  • 为苹果提供劣质内容
  • 为苹果提供虚假内容并后续经过热更新来进行替换(马甲包)
  • 任何有可能致使用户使用第三方支付代替苹果支付的行为
注:这些原则只是白鹭引擎团队根据咱们协助开发者成功过审的经验而得出的原则,并不是表明苹果官方观点。

开发者应随时审视本身的应用是否符合上述原则。若是您仍然存在问题,能够与白鹭引擎的技术支持团队联系,咱们能够为您提供的苹果过审技术顾问。

你们能够扫描文章尾部的二维码便可联系白鹭引擎技术支持团队,还可参与咱们今天举办的抽奖小活动。

后续展望

咱们今天(2020年3月3日)还发布了 Egret Native 1.0.1 版本,修复了多处原生渲染相关的BUG,特别是一个关于 iOS 13.4(苹果开发者预览版本)上因为苹果的API调整致使EgretNative黑屏的问题,建议全部开发者更新至此版本以防止 iOS 13.4 正式发布后现有游戏出现此问题。

除此以外,咱们进一步提高了 EgretNative 的启动速度,目前一个HelloWorld的启动时间大约提高了10%左右。咱们后续也会继续针对 NativeRenderer 的性能和稳定性进行更多的优化。

咱们在2020年1月份收到了苹果的邮件,苹果指出目前 Egret Native 底层采用的 OpenGL 在将来有可能被废弃,推荐咱们采用苹果的新技术 Metal 做为其替代品。白鹭团队正在探索将底层从 OpenGL 切换为 Metal 的可行性,咱们目前倾向于基于一些业界相对成熟的开源项目进行一些改造,目前已经有了初步方案,咱们将在苹果苹果正式废弃 OpenGL 时作好充分的准备工做,若是有开发者收到相似邮件请无需紧张。

最后,祝你们成功过审AppStore,中间如有其它问题可与我联系!

谢谢!

相关文章
相关标签/搜索