Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios paymentQueueRestoreCompletedTransactionsFinished:返回带有空事务数组的队列_Ios_Ios5_In App Purchase_Storekit - Fatal编程技术网

Ios paymentQueueRestoreCompletedTransactionsFinished:返回带有空事务数组的队列

Ios paymentQueueRestoreCompletedTransactionsFinished:返回带有空事务数组的队列,ios,ios5,in-app-purchase,storekit,Ios,Ios5,In App Purchase,Storekit,问题:我调用[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]并返回给我的观察者paymentqueue恢复完成的事务已完成:SKPaymentQueue,带有空事务数组。但我在应用程序中购买了非消费品 我正在测试我的应用程序如何从不同的州恢复购买 复制的简单步骤: 添加付款并完成购买。队列返回SKPaymentTransactionStatePurchasedtransaction,所以我在队列中启用该功能并完成事务 删除有关

问题:我调用
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]并返回给我的观察者
paymentqueue恢复完成的事务已完成:
SKPaymentQueue
,带有空事务数组。但我在应用程序中购买了非消费品

我正在测试我的应用程序如何从不同的州恢复购买

复制的简单步骤:

  • 添加付款并完成购买。队列返回
    SKPaymentTransactionStatePurchased
    transaction,所以我在队列中启用该功能并完成事务
  • 删除有关购买的信息,以便我可以重新购买。(想象一下,用户重新安装了该应用程序,或开始在另一台设备上使用该应用程序)
  • 再次尝试在应用程序中购买。收到“您已购买此软件。点击“确定”再次免费下载。”。所以我按OK。然后再次将return
    skpaymenttransactionstatephased
    transaction排队,这样我就启用了该功能并在队列中完成了事务
  • 再次删除有关购买的信息。:)
  • 再次尝试在应用程序中购买。接收“您已购买此应用内购买,但尚未下载。”。只有一个OK按钮,甚至在您按下它之前,您将收到状态为
    SKPaymentTransactionStateFailed
    的事务。我把它定下来。但当事务失败时,我不会启用该功能
  • 最后,尝试使用
    [[SKPaymentQueue defaultQueue]restoreCompletedTransactions]还原已完成的事务。然后返回观测者
    paymentQueueRestoreCompletedTransactionsFinished:
    SKPaymentQueue
    ,其中包含空的
    事务
    数组

  • 我觉得苹果沙盒服务器现在坏了,所以我无法正确恢复事务。还是我做错了什么?

    由于您已在步骤3中完成了购买,因此无需恢复该购买IMHO

    第2步和第4步与用户重新安装应用程序不同,因为应用程序已启动并正在运行,因此SKPayment可能会采取一些措施来减少服务器负载。您最好尝试删除应用程序并安装,然后立即使用
    restoreCompletedTransactions
    恢复购买


    我以前的回答是:

    -(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue*)队列在支付队列处理完所有可恢复的事务后被调用。它只是告诉您恢复过程已经完成

    对于每个可恢复的购买,将调用
    -(void)paymentQueue:(SKPaymentQueue*)队列更新交易:(NSArray*)交易
    ,您需要处理
    交易
    交易
    的每个
    交易。交易状态
    正在
    SKPaymentTransactionStateRestored


    您是否尝试过使用real device并先删除了旧应用程序?当然,我正在real device上进行测试。我重新安装了应用程序,并为购买测试创建了新的测试帐户。你知道如何解决这个问题了吗?谢谢。是的,我知道。我已经实现了“-(void)paymentQueue:(SKPaymentQueue*)队列更新的transactions:(NSArray*)事务”,但在我还原事务时从未调用它。