【问题标题】:Restore purchases with RMStore使用 RMStore 恢复购买
【发布时间】:2014-09-22 08:42:53
【问题描述】:

我正在尝试让 RMStore 库正常工作,但因此我需要能够恢复用户可能进行的应用内购买。我知道该方法:restoreTransactionsOnSuccess:,但使用此方法我不知道 哪些 应用购买已恢复。

[[RMStore defaultStore] restoreTransactionsOnSuccess:^{



} failure:^(NSError *error) {



}];

上面的代码是我使用的,它正在工作,因为在日志记录中我看到购买的应用程序购买。我错过了什么吗?

有人能指出正确的方向吗?

提前致谢!

【问题讨论】:

  • 使用带有通知的库部分。更容易

标签: ios objective-c frameworks rmstore


【解决方案1】:

正如 Merlea Dan 提到的,您可以通过通知来实现这一点。 RMStore documentation 声明:

付款交易通知在付款完成后发送 请求或针对每个恢复的事务。

只需注册为观察者并实现:

- (void)storePaymentTransactionFinished:(NSNotification*)notification
{
    SKPaymentTransaction *transaction = notification.rm_transaction;
    if (transaction.state == SKPaymentTransactionStateRestored) 
    {
        // Do something
    }
}

值得一提的是,其他一些人已要求restoreTransactionsOnSuccess 在成功块中返回已恢复的产品 ID 列表。你可能想订阅这个issue,以防它被添加。

【讨论】:

  • 感谢@hpique 的留言。不幸的是,它不起作用。通知的 transaction 属性为 nil,这无法帮助我找出恢复了哪些产品。这是一个错误还是我做错了什么?
  • 如果storePaymentTransactionFinished: 中的notification.rm_transaction 返回nil,那么是的,这是一个错误。不过,您使用的是最新版本吗?该属性不久前重命名为rm_transaction
  • 属性 rm_transaction 在我拥有的版本中不存在,transaction 存在。我当前的 RMStore 版本是 0.5.2
  • 哎呀,你是对的。我忘记推送更新了。您能否在 RMStore 存储库中发布包含尽可能多相关代码的错误报告?这很奇怪。如果这是storePaymentTransactionFinished: 中的一个错误,应该会有更多人抱怨。
  • 我认为我们讨论的具体方法存在误解。我说的是- (void)storeRestoreTransactionsFinished:,通知实际上是一个NSString。但我(最终)发现,当产品恢复时,- (void)storePaymentTransactionFinished: 会被调用,我可以在那里检索捆绑标识符以在我的应用程序中采取行动。我的问题已经解决了,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多