【问题标题】:(iphone) inAppPurchase when to log purchase history in own server?(iphone) inAppPurchase 何时在自己的服务器中记录购买历史?
【发布时间】:2011-09-06 21:56:34
【问题描述】:

我想在我的服务器中记录购买历史。

问题是,
在购买完成之前我不应该记录它。(因为购买可能会失败)
但是如果我在购买完成后登录它,用户可能会停止应用程序并且应用程序可能无法将购买历史消息发送到服务器。

我原本以为在用户验证收据时“记录购买历史”(当我的服务器从苹果服务器获取收据验证时)。
但是用户可能会经历多次收据验证阶段而没有真正完成购买? (我不确定)

有没有推荐的方法在服务器模型中存储应用内购买历史记录?

【问题讨论】:

  • 如果您在用户购买应用程序时阻止了 UI,一种解决方案是在购买成功完成后更新您的服务器,然后才启用 UI(通过删除一些带有活动指示器的覆盖) .

标签: iphone in-app-purchase


【解决方案1】:
  1. 您可以在购买完成后使用NSUserDefaults暂时保存购买日志,然后将其同步到服务器。
  2. 在购买完成并将购买日志推送到服务器之前,您可以阻止 UI。

【讨论】:

  • home键退出应用怎么样?
  • 如果您使用 option-1 并且用户退出了应用程序,您的日志仍将保留在 NSUserDefaults 中。它不受应用程序终止的影响。
  • 这里有一个关于如何使用 NSUserDefaults 保存/检索数据的简单教程:icodeblog.com/2008/10/03/…
【解决方案2】:

您应该在购买交易完成之前注册到您自己的服务器

如果应用程序变为非活动状态,“交易”会在应用程序变为活动状态时重试购买过程

为此,您必须使用 SKPaymentTransaction:

[[SKPaymentQueue defaultQueue] addPayment:payment];之后

保存到你自己的服务器,如果成功的话

SKPaymentTransaction *transaction = <# The current payment #>;
SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];

[defaultQueue finishTransaction:transaction;]

如果没有

[defaultQueue restoreCompletedTransactionsWithApplicationUsername

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多