我在服务器端检查和处理 IAP 收据(消耗品),只有在应用程序恢复正常时才调用 [[SKPaymentQueue defaultQueue] finishTransaction:transaction]
。
当服务器没有返回这个正常(无论出于何种原因)时,应用程序将无法正确完成事务。
我现在的问题是:应用程序需要做什么才能再次接收收据以重试,或者 iOS 是否通过调用 - (void)paymentQueueSKPaymentQueue*)queue updatedTransactionsNSArray* )交易`?当我重新运行我的应用程序时,该项目被重新提交;但用户不需要重新启动应用程序。
相关问题:当我尝试再次(在沙盒上)购买仍待处理的项目时,我收到一条 iOS 警报,说我之前购买了它,但没有下载。为什么是这样?对于非消耗品,我期望(并且实际上已经看到)这一点。我可以再买一个消耗品,但之前的那个还在等待中。
一旦你完成了 CONSUMABLE IN-APP 的交易,下面的方法就会触发,添加这个语句“[[SKPaymentQueue defaultQueue]finishTransaction:transaction]”来删除购买的产品。使用这个语句可以避免警告消息(I之前买过但没有下载)。
-(void)paymentQueueSKPaymentQueue *)queue updatedTransactionsNSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
if (transaction.downloads)
{
[[SKPaymentQueue defaultQueue]
startDownloads:transaction.downloads];
} else {
//Add the following line to remove purchased observer
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
break;
case SKPaymentTransactionStateFailed:
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
break;
}
}
}
关于ios - 如何处理未完成的iOS应用内购买消耗品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22365835/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |