我对应用内购买的特定情况有疑问。
我们的应用程序中有购买硬币的消耗品:
问题是,如果对我们服务器的请求超时或失败,我们该怎么办?用户花了钱,但永远不会得到硬币。如果他们试图再次购买,它会给他们一个错误,说购买没有下载。
我看过“恢复交易”选项,但不知道如何在此处应用它。我宁愿在应用程序的某个地方没有按钮。
不要担心这个应用程序尚未发布,这个应用程序是用C#编写的MonoTouch,但欢迎Objective-C的答案。
答案 0 :(得分:1)
恢复交易会这样做。它只是重新下载购买。看看这里的第五篇文章:
http://monogame.codeplex.com/discussions/359109
以下是实现它的代码:
InAppPurchaseManager> MySKPaymentObserver:
public override void PaymentQueueRestoreCompletedTransactionsFinished (SKPaymentQueue queue)
{
foreach(SKPaymentTransaction transaction in queue.Transactions)
{
#if DEBUG
Console.WriteLine("Restoring Transaction " + transaction.Payment.ProductIdentifier);
#endif
theManager.restoreTransaction(transaction);
}
}
以下是如何在游戏中调用代码:
app = new InAppPurchaseManager ();
app.LoadStore();
SKPaymentQueue.DefaultQueue.RestoreCompletedTransactions();
答案 1 :(得分:1)
我所做的方法是在NSUserDefaults中保存失败的事务。因此,每当应用程序来自后台时,它会检查任何失败事务的用户默认值,然后再次重试。
我不确定它是否正确。但是,我想知道是否有更好的方法来做到这一点。