近期 Unity 提交苹果审核被拒的问题

简介: 游戏提交苹果审核,被打回。在 bugly 上没有查到崩溃信息,苹果给了 crash 日志也说明。   拒绝原因如下: Your app crashed on iPad or iPhone running iOS 11.2.5 connected to an IPv6 network during our review.   logs 日志也看不出什么,初看像是 IPv6的问题,实际上与IPV6无关。

游戏提交苹果审核,被打回。在 bugly 上没有查到崩溃信息,苹果给了 crash 日志也说明。

 

拒绝原因如下:

Your app crashed on iPad or iPhone running iOS 11.2.5 connected to an IPv6 network during our review.

 

logs 日志也看不出什么,初看像是 IPv6的问题,实际上与IPV6无关。

 

之后同事帮忙搜索文章,有一篇文章说是 AB 的加载方式,不要用 WWW。我们游戏里没有用过这个方法,先排除掉。后来在知乎上找到一篇文章:

最近好多朋友因为这个问题被IOS拒审>>

 

依据文章提供的线索,找到 DisplayManager.mm 文件 中的 – (id)init 方法,将监听 AirPlay 的事件注释掉即可。

 

苹果审核环境的模拟:

一台 iPhone 或 iPad + 一台 iMac。 Mac 上先安装 AirServer(选择试用版本 http://www.airserver.com/Download

image

 

然后移动设备的 wifi 连接 iMac 的共享网络。这样移动设备启用 屏幕镜像(AirPlay)就可以模拟进行测试了。

 

如果需要开启IPV6,只需要在 Mac 的设置 –> 共享,点击共享的时候,按住 Option 就会出现 IPv6的选项,移动设备连接成功后,可以从 DNS 上看出是否为 IPV6。

 

IPV6启用的具体步骤和方法,可参考这篇文章:Mac电脑搭建IPv6测试环境>>

 

移动设备镜像到 iMac 上,如果用数据线,不要求是同一网络,如果不使用数据线,则必须处于同一 Wifi 下。

 

 

如果后期预防此问题?

因为 DisplayManager.mm 是 Unity 打包的时候才会生成的,所以只需要替换模板即可。

我根据在 Windows 下的路径

image

在 Mac 的应用程序中,找到 Unity/PlaybvackEngines/iOSSupport/Trampoline/Classes/Unity/DisplayManager.mm 找到相应的位置,注释掉代码,保存。之后打出来的包就彻底解决掉这个问题了。

 

上面这个 bug 属性 Unity 官方的 bug,2018.1.0b1版本修复掉了,其它版本我不太确定,可以根据上面的路径自己去排查一下。

目录
相关文章
Glide Caused by: javax.net.ssl.SSLPeerUnverifiedException: Hostname not verified:
Glide Caused by: javax.net.ssl.SSLPeerUnverifiedException: Hostname not verified:
1429 0
|
6月前
|
JavaScript 数据可视化 前端开发
three.js简单实现一个3D三角函数学习理解
1.Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库,利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能,如几何体、纹理、光照、阴影等,以便开发者能够快速地创建复杂且逼真的3D场景。同时,Three.js还具有很好的跨平台和跨浏览器兼容性,让用户无需安装任何插件就可以在现代浏览器上观看3D内容。
207 0
|
8月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
936 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
缓存 算法 Java
底层原理:垃圾回收算法是如何设计的?
理解Java虚拟机垃圾回收机制的底层原理,是成为一个高级Java开发者的基本功。本文从底层的垃圾回收算法开始,着重去阐释不同垃圾回收器在算法设计和实现时的一些技术细节,去探索「why」这一部分,通过对比不同的垃圾回收算法和其实现,进一步感知目前垃圾回收的发展脉络。
15040 2
底层原理:垃圾回收算法是如何设计的?
|
10月前
|
设计模式 算法 架构师
软考软件设计师:是否值得报考?详尽分析与建议
软考软件设计师是我国IT领域权威认证之一,涵盖软件设计、系统分析、架构设计等多方面知识。
458 1
Unity精华☀️一、从旋转到万向锁之:Unity的旋转
Unity精华☀️一、从旋转到万向锁之:Unity的旋转
|
人工智能 自然语言处理 机器人
谷歌将大模型集成在实体机器人中,能看、听、说执行57种任务
【9月更文挑战第17天】近年来,人工智能在多模态大模型领域取得显著进展。谷歌最新研发的Mobility VLA系统,将大模型与实体机器人结合,实现了视觉、语言和行动的融合,使机器人能理解并执行复杂多模态指令,如“我应该把这个放回哪里?”系统在真实环境测试中表现出色,但在计算资源、数据需求及伦理问题上仍面临挑战。相关论文发布于https://arxiv.org/abs/2407.07775。
281 9
|
Java
SpringBoot 配置 Swagger
SpringBoot 配置 Swagger
400 0
|
前端开发 Java API
Springboot整合Swaggar最简单方法
Springboot整合Swaggar最简单方法
415 0