restoreCompletedTransactions坏了吗?

okg*_*kgo 21 iphone in-app-purchase

SDK 4.3中的restoreCompletedTransactions是否已损坏?

我正在尝试恢复我的自动续订订阅.它不会导致对updatedTransactions的回调.这是我的代码.

 {
 ....
 [appDelegate.inapp loadStore];

 [[SKPaymentQueue defaultQueue]  restoreCompletedTransactions];
 ....
 }
Run Code Online (Sandbox Code Playgroud)

期待回调到updatedTransactions,但不接收它.

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
     NSLog(@"IN updatedTransactions,  transaction.transactionState");

    for (SKPaymentTransaction *transaction in transactions)
    {

        switch (transaction.transactionState)
        {
            ...
            ...
            case SKPaymentTransactionStateRestored:
            NSLog(@"IN updatedTransactions,  SKPaymentTransactionStateRestored");
            [self restoreTransaction:transaction];
            break;

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我最后接到了这个电话.

-(void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
}
Run Code Online (Sandbox Code Playgroud)

And*_*Ley 24

如果您在Sandbox环境中进行测试并且您的测试用户被破坏,这仍然会(1)发生.在iTunes Connect中创建一个新的测试用户,然后重试.

目前还不完全清楚是什么让测试用户变坏了; 从我收集的内容中,在非沙箱环境中使用它们可以做到这一点,但也可能有其他原因.

(1)Xcode 4.3.1,iOS SDK 5.1

  • 等一下,谢谢.那些测试用户很精致 - 在测试过程中创建增量测试用户成为我的测试流程. (2认同)

Ala*_*din 6

确保在使用前添加观察者 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

你的代码应该是这样的:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];


小智 3

我能够解决这个问题,但这很奇怪。在我的测试设备上,我被 iTunes 窃听以登录多个测试用户帐户。我通常只是点击取消并使用我想要恢复的帐户测试我的恢复。这次我决定为这些其他烦人的登录框输入密码。它有效,下次我重新启动我的应用程序并点击恢复时,它并没有让我登录其他测试帐户,只是我正在测试的帐户。我继续进行恢复,它确实恢复了我想查看的项目。

我想说的是,我们遇到了愚蠢的沙盒问题,而且我们也知道苹果在应用程序购买方面已经发生了总体变化。继续尝试它,你就会成功的。

希望这可以帮助你。

  • 在iOS 5.0中仍然面临同样的问题 (3认同)