我正在尝试在 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
这个对吗?上传后显示“等待截图”,我理解这是正确的。