iOS内购中有时候会遇到用户内购成功了,但是App里却无法收到用户内功成功的通知。具体就是协议 SKPaymentTransactionObserver
中的- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions
方法没有被调用。
有个小方法判断你是否遇到这种问题,当用户购买成功点击恢复购买时,弹第一个框的就是这种情况,通知肯定收不到,其实正常应该是第二种框。
正常情况
问题的原因出在了第三方库,第三方库里可能也有SKPaymentTransactionObserver
的通知,自己的一定要确保在第三方库调用前注册通知。所以解决方案也很简单,在didFinishLaunchingWithOptions
就注册[[SKPaymentQueue defaultQueue] addTransactionObserver:self]
确保最先调用。
参考:http://greensopinion.com/2017/03/22/This-In-App-Purchase-Has-Already-Been-Bought.html
网友评论