最近做的一款项目用到了苹果内购,此前并没有做过相关功能,所以我当时的心情是拒绝的(内购那么多坑,吓死宝宝了),毕竟涉及到支付,涉及到钱还是要很慎重对待的。
于是,我在网上这一通搜索,查看别人的笔记,好在广大程序员们还是很有共享精神的(此处应有掌声,非常感谢),有的只记录了一些关键点,有些记录的非常全面,从填写内购协议到代码,以及过程中遇到的一些坑都图文并茂的写下来了,给大家提供下链接,拿走不谢:
www.greatytc.com/p/ecc4f53a83c8
blog.csdn.net/u014220518/article/details/55253275
www.greatytc.com/p/86ac7d3b593a
根据这些教程终于磕磕绊绊的写完内购,提交审核的时候发现没有能选择APP内购买项目的地方,根据教程第一次提交包含内购的APP时要将所有内购买项目一起提交审核,审核过后再添加新的内购买项目就可以单独审核了。然后我就想是不是我的内购买项目创建的不对,我的内购买项目创建时有一些描述文字没填,保存后显示元数据丢失,百度一搜有人说数据填全了就好了,我就把每个内购买项目能填的地方都填了,保存后显示等待审核,这样APP提交审核的时候就可以选择内购买项目了。
第一次提交审核,过了两天,被打回来了,还附带几张截图,原因“我的钱包”充值页面不能包含任何解释内购的文字,比如跟用户解释为什么充值要使用内购,比如苹果公司对内购的一些规定,不能提现这些内容,修改后再次提交。
第二次打回来,说是找不到内购的地方,找不到APP需要用到后台播放音频的功能。我就将找到内购的详细流程回复给他们,还录了一段使用音频播放功能的视频。还说打我的电话打不通,让我提供另一个联系方式(提交审核的时候光写手机号会报错,手机号前面必须加上+86才行,但是加上+86后手机号就打不通了,这个有点坑),最后回复邮件的时候我写了两个手机号,一个加上+86的,一个不加的。
过了大概几个小时,苹果那边给我打电话,让我协助她审核我的APP,我教她一步步找到登陆的地方,然后充值,购买音频,播放。
整个流程都跑通了,她说充值页面不需要再多一个“确定支付”的按钮,用户选择了某一个内购项目,就代表他确定要买了。
我点头,好,我一会就改。
然后又问我为什么限时免费的音频和内购一定要登录才可以使用。
我说要登录了我们才能知道是谁充值了,该给谁的账户充钱呀,至于限时免费的音频我们需要统计播放人数以及其他的一些行为。
她就跟我强调既然是免费的,就得允许用户不登陆就可以享受到,还有内购也必须可以不登陆购买,将购买信息保存在本地就行。
我说万一用户换手机了,充值数据都在原来手机上,他在新手机上不就不能用这些钱了么?
她说你怎么知道用户会换手机,万一不换呢?
我俩又讨论了一阵,最后她说咱们现在讨论这个没有意义,我也不是要告诉你为什么要这样,而是跟你说我们有这个规定,用户必须不登陆就可以使用内购,你可以诱导用户登录后再购买,但不可以强制用户去登陆(好霸气,我竟无言以对,谁让我没好好看苹果规定呢)。
后来我们把充值功能改成购买会员,然后特意查看了其他的一些购买会员的APP,他们都有游客购买的方式,购买会员后就可以拥有会员的所有权限,不过游客不能发表评论点赞这些操作,当用户登录后会提示用户"当前设备已开通VIP,是否与此账号绑定?",用户点击绑定就可以将保存在本地的购买信息跟实际账户绑定。
第三次提交又被打回来,说是不支持IPV6,获取不到信息(此时我的心中真是一万个xxx奔腾而过啊,上次电话沟通的时候我明明一步步教她登陆,购买成功了,我还从电话里听到她播放我们音频的声音了,明明是没问题的啊,这是闹哪样)。没办法,我撤回审核,又打包提交了一次,万幸,审核过了。
所以啊,有时候因为IPV6被拒,不一定就是我们不支持,有可能是审核那边的网抽疯了,多提交几次就好了。
总结
1、创建内购买项目时,如果有某些地方没填,保存后会显示“元数据丢失”,这种状态的内购买项目是无法提交审核的,需要把内购买项目的每一个可填的地方都填写清楚,都填写完保存后会显示“准备提交审核”
2、充值或者有内购的地方不允许有苹果内购相关规定的提示语
3、内购项目必须点击即可购买,无需点之后再确认购买
4、内购买项目不允许强制用户登录注册后再购买,可以用游客身份购买
5、所有免费的东西都要允许用户在未登录状态下播放观看
6、游客身份解决方案:
1)服务器端做一个苹果审核机制,审核期间游客身份可以进行一切行为,一旦审核通过,修改服务端即可达到强制用户登录进行内购买的目的(这个有点。。。)
2)游客可以进行内购买,购买时以设备UUID为准,生成一个游客账号,将购买信息保存在服务器和本地,当用户登录正式账户后判断此设备是否进行过内购,有的话提示用户将游客身份购买的权益与现有账号绑定,如果绑定,游客权益则迁移到正式账户,如果不迁移,则游客身份和正是账户是两个独立账户,正式账户不享有游客身份的权益(我用的这个)