检查是否已购买应用内付款项目

时间:2016-02-16 01:08:25

标签: ios storekit

我现在花了大约24小时实施Apple的StoreKit IAP系统。 3个小时后,我得到了"购买"本身工作但最后21个小时我浪费在实施所有的收据沟通。现在我正在努力让openSSL工作(一些bitcode编译器错误),我达到了放弃的程度。

我不关心人们破解我的应用程序或类似的东西,所以有一种简单的方法可以询问App Store服务器是否已经进行了应用内购买?没有任何加密,密钥,证书或类似的东西?

流程将是这样的:

  • 将NSUserDefault设置为" true"购买后
  • 在每次推出应用时,如果有互联网连接,请再次检查
  • 除非设备已连接到互联网,否则NSUserDefault将保持开启状态"
  • 如果用户使用NSUserDefault进行了调整,则只要应用程序再次连接到互联网,它就会被覆盖
  • 如果用户找到自己的方式,他应该保留该项目,世界上任何用户都无法支付我足够的费用再花一个小时

因此,如果您知道实现此目的的简单方法,请告知我们。我注意到在购买了带有测试帐户的(非消耗性)产品后,弹出窗口会告诉您之前已经购买过该产品。也许这可以用于此目的?

我很抱歉现在发布非常非正式的发布方式,但这是我认为谷歌在Android上比苹果在iOS上做得更好的第一次。无论如何,每个应用程序都有裂缝,谷歌的系统远非防弹,但最终,如果一个黑客需要10分钟或2个小时来操纵应用程序,它会有什么不同?

我花了1个小时才能在我的Android应用程序中使用应用程序付款,但Apple在这里需要的是荒谬的。他们的"说明"根本没有帮助,就像他们想要实现所有这一切的秘密一样,你必须猜测。

1 个答案:

答案 0 :(得分:3)

如果您不想查看收据,则只需要实施SKPaymentTransactionObserver协议,并使用SKPaymentQueue' {addTransactionObserver {{{}} {{{{ {1}}。理想情况下,您希望在App Delegate中尽早完成此操作,以确保您在启动时收到发送到您应用的任何交易(这对订阅而言非常重要)。

paymentQueue:updatedTransactions:方法中,检查每笔交易的transactionState。如果是SKPaymentTransactionStatePurchasedSKPaymentTransactionStateRestored,则购买(应该是)有效。然后,您可以将状态存储在NSUserDefaults或数据库中。

不要忘记实施恢复购买。

这非常有效,但是任何已经越狱并安装了绕过IAP的软件的人都会免费获得IAP:它不需要特定于您的应用程序,只需返回"已购买&# 34;任何IAP。