# iOS预审

# 背景

AppStore审核最大痛点可以归纳为三个:“误报率高” 、“描述模糊”和 “申诉慢”。我们深知,苹果的上架审核是非常严格的,然后对私有API的调用是绝对不能容忍的,很多开发者都对提审有恐惧感,明明我没用到这个方法,为什么又被拒了?代码里翻了几遍都没找到相关的字符…

# 苹果商店审核的手段

先来讨论下苹果商店是怎么做审核的。

首先,我们提交给苹果商店的,是一个ipa文件,里面的bin文件,都是编译好的二进制可执行文件,苹果生态中叫做machO格式,machO格式定义了各种分段,比如引用的库列表,定义的类列表,方法列表,协议列表,字符串列表,然后又在一个地址映射表中记载着这些类,方法的对应关系,和实际的机器码机址,那么,苹果只要对这些特定的段进行扫描,就能扫出来有没有引用一些非公开的API,类,系统库。

根据UC这边的经验积累,苹果会特别关注以下几点

  • 私有库的引用,这个是必死的项;
  • 有虚拟物品内购的产品引用了第三方支付,这个也是死刑;
  • 只有声明,但没有实现的方法名,如果命中了,这个被拒的概率是非常非常大的;
  • 所有的类名,切记不能与系统的私有类同名,为了减少被拒的可能性,还是换个名字吧;
  • 所有的字符串,能不与系统的私有类同名的,还是尽量不要同名,为了减少被拒的可能性,还是换个名字吧;
  • 苹果扫描的私有API库,是会针对所有固件版本的。

# 解决方案

岩鼠研发团队通过多年的持续深入研究,沉淀出了一套成熟的解决方案。

  • 建立起一套可行的扫描方法;
  • 收集所有固件版本的所有已知的私有API库;
  • 持续不断的完善与更新这个私有API库



# 测试流程


# 报告解读

报告中已经针对问题的严重性做了分级:严重 或是 待优化,并给出相应的建议。

对于严重问题,建议第一时间处理。

1580727698811-deb87a22-6e8b-435d-a083-db74c1198aee (1).png