近日在项目内购中遇到“您已经购买了此程序内购买(In App Purchase)项目,但尚未下载”的问题,查阅google和百度各种文章,没找到合适的解决方案,折腾一整天,终于解决,解决方案贴出来,供大家参考。也是为了验证这个方案的正确性。欢迎拍砖!
首先说说出现这个问题的原因,一般是购买成功后业务逻辑出了问题(或者是逻辑依赖网络,网络出了问题),没有成功调用finishTransaction,看如下代码:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for(SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
// Item is still in the process of being purchased
break;
case SKPaymentTransactionStatePurchased:
// Item was successfully purchased!
[self completeTransaction:transaction];//这儿出了问题抛异常,导致下面一句代码没执行
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
brea