/LTVestbagDemo

iOS 马甲包 Demo

Primary LanguageObjective-CMIT LicenseMIT

马甲包开发

马甲包简介

  1. 马甲包:同一套代码,套在不同 App 内进行上架。我们一般把提交审核展示出来的代码称为 A 面(也称为:壳),隐藏的功能代码称为 B 面。

为什么要做马甲包?

一些特殊的行业在现行规则下 App 受限,原因可能如下:

  1. 国家要求相关资质才能开展相关业务,才能提交到各大应用市场,比如金融、P2P、游戏等;部分违法业务,如:博彩等
  2. ASO:单个 App 覆盖的关键词有限,需要多个相同内容的 App 来尽可能覆盖多的关键词
  3. 单个 App 能推广到的用户数有限,需要多个相同内容的 App 来提高总用户数

总的来讲,做马甲包是为了扩大用户数来实现营收增长

会遇到哪些问题?

  1. 部分行业 App 由于政策原因,正常提交 App 会被要求出示相关资质,如果公司不能提供相关资质则会被拒。比如以 5.2.1 需通过相应资质原因被拒
  2. 同一份代码嵌入多个 App 代码特征是可能重复的,可能会被以 4.3 重复应用被拒
  3. 2.1 大礼包

如何解决问题?

资质问题

  1. 跟有资质的公司合作,让他们提供资质与壳。比如一个P2P App:
    • 找有完整资质的公司进行合作,但可行性不高。有完整资质公司一般不会担这个风险,一旦被发现会影响该账号下所有的 App。
    • 找其它有跟钱相关的资质的公司,比如:理财类、银行类等。同时,在元数据采用一些中性词汇。
  2. 不依赖资质,选择科技类公司账号,先国外上线,迭代几个英文版本后,添加中文,再逐步修改元数据。一般认为你的 App 会由你的主要上架地区的审核团队来审核,如果选择国外作为主要上架地区,审核团队是有可能忽略中文的元数据。

总的来讲:没有固定的套路,不管你怎么变化套路,苹果总会慢慢察觉并封锁这一套路

代码问题

  1. 代码特征问题

    • 项目名修改
    • 类名混淆
    • 方法名混淆
    • 属性混淆
    • 添加垃圾代码
    • 以入口形式添加,通过后台下发控制
    • 删除跟行业相关敏感字符串、图片,比如:银行卡
    • 批量修改图片的特征
    • 采用 framework 方式来集成功能模块,比如私有 cocoapod、添加 framework target 等
    • 由不同的开发人员采用不同代码风格来重写代码功能,减少代码特征
    • 拆分 App 模块,只上提供功能的最小模块,减去非必要模块,比如分享模块就可以去掉
    • 支付SDK,比如微信、支付宝SDK,均有风险,解决方案:
      • 删除官方 SDK,采用 openshare 来支付
      • 删除官方 SDK,走 h5 支付方案,通过 JS 交互将支付的 URL Schemes传给 App 来进行支付交互
  2. 审核开关:什么时候打开 B 面

    开关 说明
    启动前置页 监测是否有网络,如果没有网络则显示无网络页面,有网再去各种检测
    当前地区国家 是否为**
    时区 是否在**:Asia/Hong_Kong、Asia/Shanghai、Asia/Harbin
    系统语言 非简体中文即为审核人员
    设备机型 由于一般 App 只支持 iPhone,故认为 iPad 即为苹果审核人员
    时间开关 启动时检测本地时间,只有大于给定时间时才会发送网络开关请求
    网络开关 由后台决定是否开启 B 面
    B 面记录开关 记录是否开启过 B 面,如果开启过 B 面则不请求网络
    IP 地址 拒绝对美国IP提供服务

    由于苹果会对源代码进行扫描,建议开关均采用加密形式写入。

  3. 如果业务开展无需原生就简单的多了,开关过了后,直接把 B 面切成 H5

提审注意事项

  1. 关闭电脑 GPS
  2. 使用 4G 上传 ipa 包
  3. 尽量使用不同的 Mac 设备上传
  4. 一个账号下最多挂一个马甲包,以免被牵连
  5. 一开始上线地区可以不要选择所有地区,可以只随便选择一个地区,尽量保证过审。这个地区在你的 App 上架之后是可以随便改的,所以你一开始不妨就让它在一个语言不通的小国家上线,反正也不会有人用。

壳类型、元数据

  1. 每日监测 App Store 上下架情况,找到合适的马甲包类型并学习上架过程
  2. 壳类型:热点类型 App(比如:垃圾分类等)、工具类型(最为常见)
  3. 国内上架
    • 如果是资质的公司合作,元数据直接上真实内容。
    • 如果是其它有跟钱相关的资质的公司,元数据尽量中性一点。建议采用逐步迭代的方式来更新。
  4. 国外上架 --> 国内上架
    • 前面几个版本常规迭代壳的元数据,添加中文语言后元数据依旧常规迭代几个版本,App 稳定后再修改中文元数据为业务相关中性词汇跟宣传图的内容

注意:不同壳类型会影响 App 的运营推广

总的来说:元数据建议采用逐步递增迭代来减少被拒风险

App Store Connect 清理工作

  1. 当 App 被拒后,我们要开始着手做 App Store Connect 清理工作,主要是为了清除苹果记录的代码特征、App 元数据
    • 清理二进制文件:前往应用的 AppStoreConnect 页面,在 TestFlight 栏目下,找到你之前提交过的构建版本,点击“将构建版本设置为过期”,这一步是必须要做的
    • 清理 App 信息:之前填写过的关键词、开发者网站链接、App 名称、App 图标,全部换成无意义的随机内容,和真正内容不要有关联。
    • 换账号:购买一卡一付的主账号、不购买一卡多付的(子)账号;一卡多付的账号一旦被调查,所有使用该卡支付的账号都会进入被调查