# iOS预审
# 背景
AppStore审核最大痛点可以归纳为三个:“误报率高” 、“描述模糊”和 “申诉慢”。我们深知,苹果的上架审核是非常严格的,然后对私有API的调用是绝对不能容忍的,很多开发者都对提审有恐惧感,明明我没用到这个方法,为什么又被拒了?代码里翻了几遍都没找到相关的字符…
# 苹果商店审核的手段
先来讨论下苹果商店是怎么做审核的。
首先,我们提交给苹果商店的,是一个ipa文件,里面的bin文件,都是编译好的二进制可执行文件,苹果生态中叫做machO格式,machO格式定义了各种分段,比如引用的库列表,定义的类列表,方法列表,协议列表,字符串列表,然后又在一个地址映射表中记载着这些类,方法的对应关系,和实际的机器码机址,那么,苹果只要对这些特定的段进行扫描,就能扫出来有没有引用一些非公开的API,类,系统库。
根据UC这边的经验积累,苹果会特别关注以下几点
- 私有库的引用,这个是必死的项;
- 有虚拟物品内购的产品引用了第三方支付,这个也是死刑;
- 只有声明,但没有实现的方法名,如果命中了,这个被拒的概率是非常非常大的;
- 所有的类名,切记不能与系统的私有类同名,为了减少被拒的可能性,还是换个名字吧;
- 所有的字符串,能不与系统的私有类同名的,还是尽量不要同名,为了减少被拒的可能性,还是换个名字吧;
- 苹果扫描的私有API库,是会针对所有固件版本的。
# 解决方案
岩鼠研发团队通过多年的持续深入研究,沉淀出了一套成熟的解决方案。
- 建立起一套可行的扫描方法;
- 收集所有固件版本的所有已知的私有API库;
- 持续不断的完善与更新这个私有API库
# 测试流程
- 服务入口:https://yanshu.effirst.com/product/pretrial/overview
- 上传IPA包,提交测试
- 在 个人账户的 我的报告->iOS预审 或 企业账户的 企业报告->iOS预审,可以查看到已经创建的测试报告
# 报告解读
报告中已经针对问题的严重性做了分级:严重 或是 待优化,并给出相应的建议。
对于严重问题,建议第一时间处理。