苹果审核被拒3.1.1及5.1.1(游客内购及恢复购买)解决方案

.苹果内购的相关功能已经上线2年多,苹果并未在此多有为难,最近日新增用户连续突破新高,内购收益也跟随水涨船高,突然在一个版本上被苹果审核拒绝。


苹果回复的拒绝详情

其实主体思想就两个:1.用户在不提供手机号的情况下(也就是不登录)也可购买会员等内购相关内容。2.如果用户购买了可恢复购买项,在用户更换设备后,允许用户在新的设备上恢复自己的相关权益。

因为更新的这个版本是为适配iOS17上的问题,线上用户已反馈存在崩溃,时间紧急,所以给苹果回复了一个邮件对情况做了说明。


提交给苹果的说明邮件

鉴于苹果一贯的审核原则,以为苹果并不会理会而保持拒绝,但是一天后出现了转机,苹果回复了表示理解的邮件,并先行将此版本进行通过审核(此前从未有过),并督促我方在后续的版本中添加上述两个功能。


苹果回复的通过审核的邮件

 其实大家都心知肚明,苹果虽然言语客气,但是下次提交审核,如果没有添加相关功能,肯定被拒。

以下正式开始解决方案:

1.游客内购:

 其实所谓游客,只是没有手机号等相关认证信息,如果想购买权益,后端需要知道将权益交付给谁,总要有一个“人”才行

如果用户未登录购买时,获取用户设备UUID,并存储到KeyChain中,使用此UUID自动注册成为一个账户,并将权益下发至此。

因为KeyChain不与APP绑定,所以及时APP被删除后再次安装也不受影响。用户一旦被注册成功,后续流程与正常用户完全相同。


2.恢复购买:

****************************着重说明!可恢复购买项只有连续包月****************************

在会员购买的页面添加一个“恢复购买”的按钮,点击按钮后判断当前用户是否是登录状态,如果未登录,依然使用UUID自动注册一个用户

然后调用:[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 开始执行恢复购买流程

恢复购买成功后会进入回调:- (void)paymentQueue:(SKPaymentQueue*)queueupdatedTransactions:(NSArray*)transactions

如果回调值为:SKPaymentTransactionStateRestored  则恢复购买成功,可以直接按购买流程来添加权益即可。

注意:如果回调进入了SKPaymentTransactionStatePurchased,这是正常购买流程中的回调,此时要判断 transaction.originalTransaction 是否有值,如果有值,说明有原始订单id,则是恢复订阅,要走恢复购买流程,如果没有值,走正常购买流程。


苹果内购回调判断 

 注意代码中的这个看似毫无关系的宏:INTERESTED_LIST_NAME(自行理解,详情不表)

最后:以上方案的解决版本已成功通过审核并上线。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容