最近项目中一个内购的问题总是被拒,跟苹果解释,最终得到的结果是必须换成No-renewing类型(囧)。
那就开始着手做吧,但是在开发的过程中遇到一个问题:在ios审核中,如果产品不能被恢复,会被拒。刚开始不太理解这个恢复的意思,后来找了一些资料
通过调用方法:
[[SKPaymentQueuedefaultQueue] restoreCompletedTransactions];
[[SKPaymentQueuedefaultQueue] addTransactionObserver:self];
之后会回调SKPaymentTransactionObserver的代理方法:- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
,通过枚举 transations ,获得SKPaymentTransaction对象,就可以拿到当前Apple ID买过的产品,也就是处于SKPaymentTransactionStateRestored状态下的产品。但是这个方法一直没有被调起,后来看了官方文档,截图如下:
Non-renewing类型的Restored是By your app,也就是说需要App自己做的(可以服务器存储,也可以本地存储),这个方法: - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray*)transactions 只会在产品类型是Non-consumable、Auto-renewable以及免费订阅情况下才会被调起。