【问题标题】:iPhone App : In App PurchaseiPhone App : 应用内购买
【发布时间】:2012-01-11 13:21:56
【问题描述】:
In iPhone App for in App Purchase:何时调用 SKPaymentTransactionStateRestored:?
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
以及如何从苹果获得成功购买应用程序的确认意味着我想在 NSlog 中打印该信息。
我应该为此写什么?
【问题讨论】:
标签:
iphone
objective-c
ios
cocoa-touch
in-app-purchase
【解决方案1】:
就我而言,只有当 Apple 将 updatedTransactions 状态响应为 SKPaymentTransactionStateRestored 或 SKPaymentTransactionStatePurchased 时,transactions 才会成功购买。
【解决方案2】:
当方法:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
for (SKPaymentTransaction * transaction in transactions) {
//process the transaction
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
break;
default:
break;
}
}
}
被称为表示你已经完成了与苹果的交易,你处理了三种情况:
SKPaymentTransactionStatePurchased:表示您的产品已被购买。
SKPaymentTransactionStateFailed:无法购买您的产品。
SKPaymentTransactionStatePurchased:这是您的问题。只要您的 SKPaymentTransactionObserver 处于活动状态,该交易就是持久的,这意味着如果您的客户打算购买您的产品但在交付产品时发生了错误(服务器错误或其他),当应用程序再次启动时,交易将返回此方法完成购买。
希望这些信息对您有所帮助。