我正在尝试在iOS 6.0上实现托管内容的IAP。
如果不发布大量代码,我的代码来自raywenderlich教程http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial 和http://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
这是对的吗?上传后会显示“等待屏幕截图”,我理解这是正确的。
答案 0 :(得分:0)
我遇到了同样的问题,因为我在Apple服务器上托管的所有IAP内容也出现了SKErrorPaymentCancelled错误。 这个问题似乎来自正在研究它的Apple。
查看更多更新: