2019年苹果更新HTML5游戏政策,要求HTML5游戏必须在Safari浏览器中显示,不能直接打包成ipa并发布到AppStore对此,很多开发者都注意到了这一点,并咨询我们帮助解决他们在EgretEngine上开发的HTML5游戏发布到AppStore的问题。在我们完整的Egret开发工作流产品中,使用EgretNative可以解决这个问题。在过去的几个月里,我们的引擎团队已经帮助数十位开发者顺利通过了AppStore新规的审核,总结了一些实践经验,今天分享给大家,希望能帮助到更多开发者朋友审核AppStore。不使用WKWebView直接打包。这是苹果现在关注的目标。开发者必须使用EgretNative提供的封装方式,不能使用WKWebView。具体原因是WKWebView发布的游戏是运行在HTML5环境下的游戏,不符合最新开发者规范中的4.7条。但是,EgretNative与WKWebView不同。底层运行纯原生的渲染引擎,针对白鹭引擎进行了定制优化,完全符合苹果的开发者规范。另外,我们强烈建议您开启EgretNative的NativeRenderer模式。使用该模式不仅可以大大提升您的游戏性能,还可以通过实际验证进一步提高AppStore的通过概率。游戏代码应该打包到本地,不要远程下载。苹果现在对应用程序的热更新要求更加严格。如果您收到Apple的拒绝邮件,并且很明显您违反了指南2.5.2-性能审查中的条款,您的应用程序包含下载代码的能力,这是AppStore不允许的,您需要修改现有项目结构,将游戏代码打包到本地,不再远程下载。指定一个简单的验证方法如下:关闭你的测试机的WiFi/4G,保持在无网环境下启动你的游戏,确保你的游戏在无网环境下可以流畅运行,直到游戏逻辑必须需要连接网络(如登录游戏服务器),至少渲染一个登录界面,界面使用Egret引擎渲染,而不是自加iOSNative控件。游戏前30分钟的资源全部采用IPA加载,而非网络加载。网络消息仅用于必要的客户请不要在服务器端交互的原生代码中包含任何WKWebView,不仅不要在游戏本身中使用WKWebView,我们建议您不要在iOS原生代码中包含任何WKWebView,因为理论上如果你包含WKWebView,你会在Apple审核后通过替换链接的方式在没有Apple审核的情况下向App添加其他功能,这违反了Guideline2.3.1-Performance,我们发现你的应用程序包含隐藏功能。AppleDeveloperSpecification的这一部分。针对这个问题,我们建议大家可以站在苹果的角度去思考,这个App是否有能力从技术实现的角度绕过苹果的审核,增加新的功能。比如理论上只要你的代码中包含一个WKWebView,并且这个WKWebView是可以随时被游戏唤醒的,理论上可以修改ApplePay弹出WebView,在Apple之后添加微信/支付宝网页支付审查能力。如果你的app从技术角度看有这样的潜力(即使你无意),那肯定过不了审核。确保您的代码不包含第三方支付代码。这个问题与上一个问题类似。请确保您的代码(尤其是遗留代码和第三方SDK代码)不包含第三方支付代码,否则您将违反指南3.1.1-业务-支付-应用内购买我们注意到您的应用或其元数据支持通过App内购买API以外的方式购买App中的内容、服务或功能,这不适用于AppStore。在我们提供技术支持的客户中,多次出现开发者接入聚合支付SDK(一般是自己公司其他部门写的),里面有微信支付/支付宝支付代码,虽然这些代码不是真跑,但还是因为这个原因太深被苹果拒绝了。总结从以上可以看出,苹果希望开发者做的是:为AppStore提交高质量的内容,并确保ApplePay被采用。苹果禁止开发者做的是:向苹果提供劣质内容,向苹果提供虚假内容,通过热更新跟进。更换(马甲包)任何可能导致用户使用第三方支付代替ApplePay的行为注:这些原则只是白鹭引擎团队根据我们协助开发者顺利通过审核的经验得出的原则,并做不代表苹果官方观点。开发人员应该经常审查他们的应用程序是否符合上述原则。如果您还有问题,可以联系白鹭引擎技术支持团队,我们可以为您提供苹果认可的技术顾问。您可以扫描文末二维码联系白鹭引擎技术支持团队,您还可以参与我们今天举办的抽奖活动。后续展望我们也在今天(2020年3月3日)发布了EgretNative1.0.1版本,修复了很多原生渲染相关的bug,特别是关于iOS13.4(AppleDeveloperPreview版)由于苹果API调整的问题导致EgretNative黑屏。iOS13.4正式发布后,建议所有开发者更新至此版本,以防止现有游戏出现此问题。此外,我们还进一步提升了EgretNative的启动速度。目前,一个HelloWorld的启动时间增加了10%左右。后续我们会继续优化NativeRenderer的性能和稳定性。我们在2020年1月收到了苹果的一封邮件,苹果指出目前EgretNative底层使用的OpenGL未来可能会被抛弃,建议我们使用苹果的新技术Metal来替代它。Egret团队正在探索将底层从OpenGL切换到Metal的可行性。我们目前倾向于在业界一些比较成熟的开源项目的基础上做一些改造。我们有一个初步的计划,等苹果正式放弃OpenGL我们会做充分的准备。如果有开发者收到类似的邮件,请不要紧张。最后祝大家顺利通过AppStore审核。如果您有任何其他问题,请与我联系!谢谢!
