现在我正在努力解决下一个问题。我已经在我的应用程序中使用简单的IAPManager从AppStore购买东西,但问题是 - 当我尝试购买产品时,应用程序调用{{1}}方法,事务状态为updatedTransactions
,然后再显示如果我想买那件东西的提醒。
只有当我在申请开始之前尝试买东西时才会发生这种情况。在重新加载应用程序之前,它不会再发生。这是我的IAPManager代码:
Purchased
答案 0 :(得分:1)
我认为你的问题与观察者有关。正如我所知,每次尝试购买产品时都会添加事务观察器,并在从事务队列中删除事务(任何)时将其删除。
如果您的交易未完成且您的应用已关闭,您将在打开应用时收到有关交易完成的通知。所以你不会收到这个通知,你会错过它。
我建议您在init方法中添加观察者,并且不要删除它,原因我之前详述过。另外,我建议您在打开应用程序时创建IAP类的实例(didFinishLaunchingWithOptions :)以设置事务观察器并接收这些事务的延迟通知。
还有一件事......你应该管理你的交易数组,而不仅仅是第一个交易。
你应该像这样创建一个for循环来处理它们
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased: {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
case SKPaymentTransactionStateFailed:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStateDeferred:
break;
default:
break;
}
};