应用程序内购买密码提示

时间:2014-09-09 01:29:27

标签: ios objective-c in-app-purchase

我正在尝试为我的IAP实现恢复过程,但它似乎表现得很奇怪。我就是这样设置的:

  • 按下按钮,调用[[SKPaymentQueue defaultQueue] addTransactionObserver:self];,然后调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
  • 尽管出现密码提示,但此立即处理恢复过程。在恢复之前,它不会等待用户输入密码。

这不可能是正确的。它处理正确的恢复产品,但无需用户输入密码即可立即处理。如果登录提示不使用它来恢复购买,那么显示登录提示的目的是什么?

2 个答案:

答案 0 :(得分:0)

您只想在初始化时调用[[SKPaymentQueue defaultQueue] addTransactionObserver:self]一次。您可以拥有多个观察者,但Apple建议不要这样做。在调用之后,处理支付队列中的任何内容。

对于还原部分,只需创建一个调用方法的UIButton即可在应用内购买类中进行还原。

//Button's action
-(void)restoreButtonTapped(UIButton *)button {
     [yourInAppPurchasingClass restoreTransactions];
}
// located in your class that handles IAP
-(void)restoreTransactions {
     [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}

成功还原的代理与购买相同,但如果失败则不会。因此,请务必实施- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

答案 1 :(得分:0)

您所看到的可能是早期购买或restoreCompletedTransactions(您为其输入密码)的交易。每次添加事务处理器时,旧事务都会在updatedTransactions中弹出,直到最后为每个事务执行finishTransaction:事务。