ios - 如何处理未完成的iOS应用内购买消耗品?
<p><p>我在服务器端检查和处理 IAP 收据(消耗品),只有在应用程序恢复正常时才调用 <code>[ finishTransaction:transaction]</code>。</p>
<p>当服务器没有返回这个正常(无论出于何种原因)时,应用程序将无法正确完成事务。</p>
<p>我现在的问题是:应用程序需要做什么才能再次接收收据以重试,或者 iOS 是否通过调用 - (void)paymentQueue:(SKPaymentQueue*)queue updatedTransactions:(NSArray* )交易`?当我重新运行我的应用程序时,该项目被重新提交;但用户不需要重新启动应用程序。</p>
<p>相关问题:当我尝试再次(在沙盒上)购买仍待处理的项目时,我收到一条 iOS 警报,说我之前购买了它,但没有下载。为什么是这样?对于非消耗品,我期望(并且实际上已经看到)这一点。我可以再买一个消耗品,但之前的那个还在等待中。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>一旦你完成了 CONSUMABLE IN-APP 的交易,下面的方法就会触发,添加这个语句“[finishTransaction:transaction]”来删除购买的产品。使用这个语句可以避免警告消息(I之前买过但没有下载)。 </p>
<pre><code>-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
if (transaction.downloads)
{
[
startDownloads:transaction.downloads];
} else {
//Add the following line to remove purchased observer
[ finishTransaction:transaction];
}
break;
case SKPaymentTransactionStateFailed:
[
finishTransaction:transaction];
break;
}
}
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 如何处理未完成的iOS应用内购买消耗品?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/22365835/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/22365835/
</a>
</p>
页:
[1]