一种大幅提升iOS In-App Purchases 内购测试效率的方法
https://juejin.cn/post/7173942907890565151
背景
大部分App都包含内购项,苹果审核的时候,如果购买的商品是虚拟,只允许走In-App Purchase ,也就是收30%的手续费,比如购买游戏里面的钻石算是虚拟货币。
开发人员在创建好一个商品,并且开发完内购相关编码后,我们都需要先进行沙箱测试,俗称Sandbox环境。只有验证通过后,我们才能提交苹果审核。因此,测试内购环节是提交审核,上架商品前的必须操作。
In-App Purchases 内购流程
IAP大致流程包括以下几个环节:
接受Apple相关协议,并在Itunes-Connect中配置App购买项(每个商品项都必须关联一个App,并且只能用于该App)
在 Xcode 中启用 App 内购买项目 的 能力,并开发 App内购相关代码
测试App内购买项目,并提交Apple审核
在App Store上发布
这几个环节中,有几个关键词(App购买项、关联一个App、测试App内购买项目),我们分别讲解一下
App内购项
上图是我们在Itunes-Connect后台配置一个内购项的相关信息,其中,我们要生成一个产品ID,这个ID是由字母、数字组成的,并且在整个App后台是唯一的。
苹果规定,内购商品的定价,只能去他们提供的价格等级去选择,同点击所有价格和货币,可以查看苹果提供了哪些定价等级, 这个等级规定了具体的价格,以及商家到手的价格,同一个价格等级会对应各个国家的货币,也就是说,内购商品的价格是根据appid所在的低于货币进行结算的。
App
每一个App都会有一个独立的Bundle Identifier与之对应。就像身份证一样,标志着这个App在AppleStore的唯一标识。我们通过查看当前设备的安装App。
App内购项关联App
我们以一个案例,假设我们现在需要申请三个内购项,分别是3币、5币、10币,然后分别对应了公司内的三个App接入,分别为YY、追完、交友。
从上面可以知道,我们每个App都会有一个与之关联的Bundle Identifer.如下图所示
因此,对于都是3币,我们要申请三个内购项,分别对应这三个App,5币、10币的与之类似
从图上我们可以看出,对于3币,在同一公司内部的多个App,后台都是下发相同的货币体系,但是由于Apple要求内购项唯一且必须一个商品ID对应一个App的Bundle Identifer,所以我们需要这样对应
测试App内购买项目
TF测试
苹果推荐我们使用TF包进行内购项的测试,我们先来看看出包流程:
第 1 步:构建出包
第 2 步:登录 iTunes Connect
第 3 步:上传构建版本
第 4 步:邀请内部和外部测试员
第 5 步:测试员通过下载TestFlight来安装TF包
这样测试的效率比较繁琐,修改一个Bug要重新走上面流程出包
打包:打包流程麻烦,流程繁琐
上传:网络不好 导致上传失败
测试:一些公司对TF包的测试账号、设备及TF包都有严格的管控
修复:如果有问题修改Bug,要重新提交代码、构建、走流程。
企业包测试
大家一般在开发阶段,都不会用正式的Bundle-Identifer来进行开发和测试,一般都会注册一个小组的Bundle-Identifer。比如笔者所在的公司,在dev阶段,我们一般是使用一个 com.enterprise.*的ID去开发。
这个企业包显然是不能进行测试的。大家知道为什么吗?
我们再来通过上面阶段进行分析下,一个内购项的申请必须关联一个App,而这个App是唯一的BundleIdentifer,
我们的企业包虽然同名,但是BundleIdentifer不一样,所以在向苹果获取商品列表的时候,是获取不到的。
企业包重签名方案支持内购测试
我们使用了一个重签名的方案,将 yy.enterprise.yyvoice的包 重签名为 yy.yyvoice, 让日常开发的包也可以快速的支持内购,这样不需要专门去打包TF包,也可以很快的让正在开发的任意包支持内购。
重签名工具支持任意App,需要可以找笔者索要哈,或者留言,我们发给大家
收益对比
时间效益
其他收益
结语
希望能够把一些工作的开发心得分析大家,如果大家能够得到一些启发就十分的开心。笔者会陆续再发一些开发的心得和大家分享。欢迎大家也在评论区积极探讨还有什么其他方案。
大家也可以看下我们近段时间发布的一个移动端动效播放器的解决方案,帮读者 ⭐⭐⭐⭐一下
动画库地址:github.com/yylive/yyev… ,希望大家能够跳转该github和作者交流,顺便点个
作者:AllenGYb
链接:https://juejin.cn/post/7173942907890565151
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
留言
張貼留言