我现在花了大约24小时实施Apple的StoreKit IAP系统。 3个小时后,我得到了"购买"本身工作但最后21个小时我浪费在实施所有的收据沟通。现在我正在努力让openSSL工作(一些bitcode编译器错误),我达到了放弃的程度。
我不关心人们破解我的应用程序或类似的东西,所以有一种简单的方法可以询问App Store服务器是否已经进行了应用内购买?没有任何加密,密钥,证书或类似的东西?
流程将是这样的:
因此,如果您知道实现此目的的简单方法,请告知我们。我注意到在购买了带有测试帐户的(非消耗性)产品后,弹出窗口会告诉您之前已经购买过该产品。也许这可以用于此目的?
我很抱歉现在发布非常非正式的发布方式,但这是我认为谷歌在Android上比苹果在iOS上做得更好的第一次。无论如何,每个应用程序都有裂缝,谷歌的系统远非防弹,但最终,如果一个黑客需要10分钟或2个小时来操纵应用程序,它会有什么不同?
我花了1个小时才能在我的Android应用程序中使用应用程序付款,但Apple在这里需要的是荒谬的。他们的"说明"根本没有帮助,就像他们想要实现所有这一切的秘密一样,你必须猜测。
答案 0 :(得分:3)
如果您不想查看收据,则只需要实施SKPaymentTransactionObserver
协议,并使用SKPaymentQueue
' {addTransactionObserver
{{{}} {{{{ {1}}。理想情况下,您希望在App Delegate中尽早完成此操作,以确保您在启动时收到发送到您应用的任何交易(这对订阅而言非常重要)。
在paymentQueue:updatedTransactions:
方法中,检查每笔交易的transactionState
。如果是SKPaymentTransactionStatePurchased
或SKPaymentTransactionStateRestored
,则购买(应该是)有效。然后,您可以将状态存储在NSUserDefaults
或数据库中。
不要忘记实施恢复购买。
这非常有效,但是任何已经越狱并安装了绕过IAP的软件的人都会免费获得IAP:它不需要特定于您的应用程序,只需返回"已购买&# 34;任何IAP。