- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在恢复已完成的交易(重复)
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
在
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
我得到了应用恢复的历史交易列表,但是方法:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
甚至没有被调用一次,所以我想知道我应该使用哪个?我做了一些研究,发现 updatedTransactions:
方法应该用于检查事务状态,但是如果我得到恢复的事务列表,将它们全部视为事务是没有意义的。我应该使用哪一个? paymentQueueRestoreCompletedTransactionsFinished
是否只给我最新的(即沙盒订阅在几分钟后到期,我在测试时在 updatedTransactions
中获得了完整的历史交易列表)。
最佳答案
有一个很棒的关于使用 StoreKit 的 WWDC 视频,它是 WWDC2012 Session 302。
要隔离每次购买,您的 updatedTransactions
方法可能如下所示:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch(transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
// Unlock content
//... Don't forget to call `finishTransaction`!
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStatePurchasing:
// Maybe show a progress bar?
break;
case SKPaymentTransactionStateFailed:
// Handle error
// You must call finishTransaction here too!
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
// This is the one you want ;)
// ...Re-unlock content...
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
一旦您确定购买正在恢复,您就可以根据需要提供内容 - 最好是从该 switch 语句中调用一个单独的方法并将交易作为参数传递。当然,实现取决于您。
关于ios - paymentQueueRestoreCompletedTransactionsFinished : vs updatedTransactions:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309427/
我已经实现了下面的代码,但我有一条警告消息: Warning: Attempt to present on whose view is not in the window hierarchy! on
我正在恢复已完成的交易(重复) [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 在 - (void)paymentQueue
正如标题所描述的,实际有什么不同? 如果我有这个: func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transaction
这是我第一次使用 Store Kit,在我尝试恢复购买之前一切都很顺利。我在 stack overflow 上看过其他几篇关于类似问题的帖子,但我没有找到适合我的解决方案。 我的应用程序中有一个调用
我是一名优秀的程序员,十分优秀!