美文网首页
苹果审核"玄学"——内购

苹果审核"玄学"——内购

作者: XiaoWhite | 来源:发表于2018-12-12 15:07 被阅读200次

    最近上架公司的一个关于儿童英语视频的App,因为内购问题,卡了很久,现在把我的这些经历整理出来,分享给大家。

    苹果内购官方文档

    为什么要使用内购?

    我们做的是一个视频播放的App,部分视频免费,其它的是付费视频,需要购买后才能观看,所以习惯性地把支付宝和微信支付接了进去,上架,第二天就被拒,理由是违反了苹果审核条例的第 3.1.1条,订阅、游戏内货币、游戏关卡、优质内容的访问权限或解锁完整版等,必须使用 App 内购买项目,而我们的情况正好就属于优质内容的访问权限,所以只能老老实实地走苹果的内购。

    另外,走苹果的内购,苹果是明确告诉你:我是要收三成利的!价格列表

    怎么实现内购?

    填写资料

    使用内购需要提供银行账户等信息,这个在网上能搜到很多教程,没有什么难度,耐心填写就好了,我这边是以前已经填过了,直接进入下一步。

    整体流程

    苹果内购整体流程.png

    添加商品

    商品类型

    首先是在开发者平台添加内购买项目,而且这些商品也是需要审核的。

    需要注意商品的类型,苹果提供了四种商品类型:消耗型项目、非消耗型项目、自动续期订阅、非续期订阅。

    这里必须要根据自己的情况选择正确的商品类型,否则审核时是不会通过的。
    具体如何选择,可以参考苹果官方文档来决定。

    产品ID

    产品ID 由自己设置,而且一旦保存,后面就不能再改,商品可以删除,但是即使删除了,这个ID 也不能再用。

    商品价格

    价格这里就比较让人不舒服了,因为你不能自定义价格,苹果已经划定了94个价格等级,商品的价格只能从这94个价格里面选择一个。苹果会从这个价格里面抽取30%的利润,另外还要扣掉一些税,所以开发者这边最后得到的收益不到这个价格的70%。这也就是为什么充会员的时候,苹果设备上的价格会比安卓设备上的价格高。

    其它信息

    在添加商品时,最下面有一个“审核信息”,这个地方一定要放屏幕快照,可以把调用内购买的页面截图放在这里,不然这个商品就是“元数据缺失”,在 App Store 页面里面是无法被添加的。
    “审核备注”里面填写沙盒环境下的测试账号,用于开发和审核时购买商品。

    15422718231700.jpg
    15422718923641.jpg

    默认情况下这个 “App 内购买项目” 是不显示的,只有当创建了可用的内购商品,这个才会显示出来。

    iOS 端实现

    在项目中添加 StoreKit.framework

    Snip20181212_4.png

    内购买的大概流程

    iOS 内购.png

    具体实现

    在购买页面,向后台请求商品数据,至少需要商品的名称和产品ID,产品ID就是在苹果开发者平台设置的那个,需要使用这个 ID 向 AppStore 请求对应的商品信息。

    我把内购的逻辑封装成一个单例 IAPManager,方便调用。

    Talk is cheap, show me the code !
    具体代码:GitHub

    在购买成功后,将 Receipt 保存在本地,再从本地获取并发送给后台进行校验,校验成功之后,删除本地的 Receipt,这个逻辑可以复用,在App 启动时,didFinishLaunchingWithOptions 方法中会直接启动 IAPManager,启动后会先检查本地是否有保存的 Receipt ,如果有,读取并校验,这样可以在一定程度上防止丢单。

    审核

    提交审核时,在新的版本里面,需要将内购买项目添加进来,一并提交审核。
    除了提供 App 审核时需要的账号,还需要提供一个沙盒环境下的 AppleID,用来测试内购买。

    审核被拒的处理

    在整个审核过程中,主要问题有两个,违反了 3.1.15.1.1 这两条。

    5.1.1

    我们原来的逻辑是,用户打开 App 之后,无论是免费还是付费的视频,如果点击播放,会先检查是否登录,如果没有登录,会给出提示并跳转用户登录页面,要求用户注册并登录。

    但是这个违反了 5.1.1 条例,被拒两次之后,苹果提供了一个链接,可以申请电话沟通讨论这个问题,最后在错过两次电话之后(美国加州圣何塞和北京时间有16个小时的时差,一定要算好时差,约好电话沟通的时间),终于接到了一位台湾腔客服小姐姐的来电。

    最终的结果是:在可以内购的情况下,不能强制用户去登录,登录操作应该是可选的,因为购买跟App账号没关系,购买使用的是 AppleID,但可以给出提示,告诉用户可以购买,但是无法同步到不同的设备上,建议登录之后再购买。

    IMG_0470.png

    3.1.1

    消耗型项目、非消耗型项目、自动续期订阅、非续期订阅

    这里主要是商品类型的选择,一开始选择了非消耗型项目,被拒。

    后来认真看了官方文档,非消耗型项目只能购买一次,而且在不同设备之间的同步是通过 AppleID 来进行的,跟我们 App 的账号没有联系,这样就更没办法要求用户登录了,不用。

    非续期订阅类型的可以多次购买,并且同步是通过 App 的账号来进行的,在添加非续期订阅的商品时,结束日期那里默认显示的是“无结束日期”且不可更改,也就是用户购买之后永久有效,这个符合我们的需求。

    Snip20181212_11.png Snip20181212_12.png

    其他

    苹果的审核被称为“玄学”,其实还是我们对审核条例的理解还不到位,但有时候这些条例确实让人很头疼,所以才会有各种想要绕过审核的方案。

    在研究上架问题的时候,确实看到一些同类 App 使用的是支付宝和微信支付,而且支付页面是用 H5 加载的,猜测很可能是在审核的时候,使用的是内购,审核通过以后,再换回到支付宝和微信的支付,就算苹果审核时扫描到有相关的SDK,也能说得过去,因为我们集成了分享,就肯定要用到这些SDK。

    但是这种做法总是存在风险的,一旦被人举报或者苹果自己发现了,下架是必须的,其他处罚就不清楚了。

    参考:
    https://www.cnblogs.com/TheYouth/p/6847014.html?utm_source=itdadao&utm_medium=referral

    https://www.jianshu.com/p/cd55b331fe2d

    https://blog.csdn.net/xtqve/article/details/52485278

    还有一个处理丢单的 Demo,链接现在找不到了,后面找到补上。

    相关文章

      网友评论

          本文标题:苹果审核"玄学"——内购

          本文链接:https://www.haomeiwen.com/subject/gatphqtx.html