iOS AppStore审核被拒 _IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching

主要是在iOS与Cocos2dx混编打CPS及联运包时遇到的问题,在原生iOS APP项目中也可能会出现


1.私有API的使用

Guideline 2.5.1 - Performance - Software Requirements

Your app uses or references the following non-public APIs:

_IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

据查询_IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching 存在于IOKit.framework中

解决方案:

1.1 打开终端,cd到项目的路径下:

$ cd (将项目文件夹拖到此处) Your Project Path

1.2 分别输入以下命令行,来找到使用私有API的SDK或者.a静态库:

$ find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep (私有API)

$ grep -lr "(私有API)" * | grep -v .svn | grep -v .md

iOS AppStore审核被拒 _IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching_第1张图片
图1 定位私有库位置

确定私有库的位置,接下来就方便移除私有库了。

2.苹果内购:特定条件下出现的计费点难以被找到,计费截图不明确

亲身经历,有些计费点随机出现(一组计费点,每日随机出现其中的1个),有些计费点在特定的日期(某个节日期间)出现,被拒了将近10次,大概有7次因为审核人员找不到计费点,即使加了详细审核备注,还是判定应用程序中不包含这个计费点!

方案1: 将所有隐藏的计费点都在同一界面展示出来,等审核通过后,再按照自己APP的逻辑展示(比较麻烦,需要修改代码逻辑)

方案2:修改计费点截图

之前的计费点截图,都显示购买确认框,可能导致具体的计费点按钮被遮挡,审核很难通过;后来尝试,不弹购买框时就截图,计费点很清晰。(不知道是不是运气好,一次性通过!)

iOS AppStore审核被拒 _IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching_第2张图片
图2 特定条件下才会出现的计费点

3.不支持IPv6

单机游戏一般出现在新增内购计费点时,需要连接网络,有时可能因为审核人员网速不好,连接不上 iTunes Store。结果:二进制文件被拒绝,您的APP不支持IPv6!

网络游戏一般在登录过程中,网速不好或者游戏服务器出现问题,登录失败! 结果:二进制文件被拒绝,您的APP不支持IPv6!

总之,只要遇到审核人员网速不好的状况,一般就会因为不支持IPv6被拒!

APP到底是否支持IPv6呢?通过下面的方式,检测:

a 找一台MAC Mini(可以使用网线连接本地网络,使用Wi-Fi的比较麻烦,这里不作描述)

b 打开 系统偏好设置; 找到 共享; Alt + 点击 共享;选择 互联网共享 、 创建 NAT64 网络  创建一个网络

c 打开安装APP的手机,连接上MAC上共享的Wi-Fi (连接普通的WI-FI时,是只有IPv4地址的,但是这个共享WI-FI,会有IPv6地址,见图3)

d 打开APP测试,如果可以正常运行使用,则支持IPv6;否则就是不支持,找相关技术人员解决问题吧。

如果你的APP真的支持IPv6,这就得好好跟苹果解释一下了!

iOS AppStore审核被拒 _IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching_第3张图片
图3 XXX的Mac mini (共享的网络)

4.用户权限问题

例如:游戏中有个竞技排行功能,被拒,原因是没有经过用户的同意,就给用户进行排名,不合理!

解决方案:最好在进入游戏前,列举协议条款,只有用户点击同意,才进行排行!

App Store审核指南

你可能感兴趣的:(iOS AppStore审核被拒 _IOObjectRelease, _IOServiceGetMatchingService, _IOServiceMatching)