我正在构建一个 iPhone 应用程序,该应用程序应该通过应用程序内购买处理订阅。当我在应用程序中从 Apple 收到收据时,我想将收据保存在我自己的服务器上,并且在我的服务器上我还想通过 Apple 服务器验证收据。与我的服务器建立连接非常重要,因为这可以保存稍后需要的有关用户的信息。
在我的 SKPaymentTransactionObserver 中,我现在尝试在 SKPaymentTransactionStatePurchased 上调用我的服务器。问题是,在 SKPaymentTransactionStatePurchased 上似乎有一个标准警报说“谢谢”并且购买已完成。由于应用程序需要一些时间才能联系我的服务器,因此在对我的服务器的调用完成之前会显示此标准警报,如果用户在此处退出应用程序,他认为购买已完成,会发生什么情况?我应该什么时候联系我的服务器?如果我想在对服务器的调用完成时向用户显示警报,我应该什么时候这样做?
这是我正在使用的代码:
//This is called on "SKPaymentTransactionStatePurchased"
- (void) completeTransaction: (SKPaymentTransaction *)transaction
{
[self saveAndVerifyOnServer:transaction];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
这就是文档的内容SKPaymentQueue
说关于finishTransaction
method:
您的应用程序应该调用
finishTransaction:仅在完成之后
交易处理成功
并解锁了功能
由用户购买。
由此,我认为您需要在服务器上保存并验证交易,并且只有在确认后才调用finishTransaction
方法。正如 Dean 所指出的,您需要考虑到用户在成功验证之前就退出的情况。
好消息是SKPaymentQueue
跨会话持续存在,因此它会记住您还没有完成购买。这意味着下次添加事务观察者时,您的委托可能会立即收到调用。您可能需要对服务器进程进行编码,以便它可以重新启动事务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)