如果托管内容,IAP会失败,但如果被视为普通非消费品,则可以正常工作

时间:2013-06-24 05:08:59

标签: ios itunesconnect storekit in-app-purchase

我正在尝试在iOS 6.0上实现托管内容的IAP。

如果不发布大量代码,我的代码来自raywenderlich教程http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorialhttp://xinsight.ca/blog/iap-content-download-in-ios6/。此代码适用于购买普通非消耗品。

我创建了一个带有托管内容的新IAP项目,并通过xcode上传(使用上面第二个链接中描述的方法)。

当我去购买该物品时,它会显示警报,然后我点击购买。在此之后不久,我的交易失败,在下面调用SKPaymentTransactionStateFailed案例:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{

    for (SKPaymentTransaction * transaction in transactions) {

        switch (transaction.transactionState){
            case SKPaymentTransactionStatePurchased: {

                if (transaction.downloads) {
                    [[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads];
                } else {
                    // unlock features
                    //[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                    [self completeTransaction:transaction];
                }    
                break;               
            }
            case SKPaymentTransactionStateFailed: {
                if (transaction.downloads) {
                    NSLog(@"transaction failed... but found downloads");
                }

                [self failedTransaction:transaction];
                break;
            }
            case SKPaymentTransactionStateRestored: {

                if (transaction.downloads) {
                    [[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads];
                } else {
                    // unlock features
                    //[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                    [self restoreTransaction:transaction];
                }

                break;
            }
            default:
               break;
       }
   }
}

transaction.error.code似乎是SKErrorPaymentCancelled。

如果我将iTunesConnect中此IAP项目的性质更改为没有托管内容,那么购买就完成了。关于导致这种情况的原因,我感到很遗憾。

任何有IAP托管内容经验的人都知道我应该注意的任何陷阱吗?可能与我创建托管内容包的方式有关吗?我只是在创建包时将所有内容放在xcode的Supporting Files组中 - 在finder中检查存档包显示内容为:

/ dSYMs

/Info.plist

/ Products / Library / InAppPurchaseContent / ProductIDName / Contents /#content here#

/Products/Library/InAppPurchaseContent/ProductIDName/ContentInfo.plist

这是对的吗?上传后会显示“等待屏幕截图”,我理解这是正确的。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,因为我在Apple服务器上托管的所有IAP内容也出现了SKErrorPaymentCancelled错误。 这个问题似乎来自正在研究它的Apple。

查看更多更新:

https://devforums.apple.com/message/839428#839428

iPhone storekit sandbox stopped working