当购买完成时,您的商店监听器的 ProcessPurchase
函数会被调用。您的应用程序应该完成用户购买的内容;例如,解锁本地内容或将购买收据发送到服务器以更新服务器端游戏模型。
将返回一个结果,指示您的应用程序是否已完成处理购买。
结果 | 描述 |
---|---|
PurchaseProcessingResult.Complete | 应用程序已完成处理购买,不应再次通知它。 |
PurchaseProcessingResult.Pending | 应用程序仍在处理购买,并且 ProcessPurchase 将在下一次应用程序启动时再次被调用,除非 IStoreController 的 ConfirmPendingPurchase 函数被调用。 |
请注意,ProcessPurchase 可能会在成功初始化后的任何时间被调用。如果您的应用程序在执行 ProcessPurchase
处理程序期间崩溃,那么它将在下一次 Unity IAPUnity 应用内购买 的缩写
请参见 词汇表 初始化时再次被调用,因此您可能希望实现自己的额外去重功能。
Unity IAP 需要明确确认购买,以确保在网络中断或应用程序崩溃的情况下可靠地完成购买。在应用程序脱机期间完成的任何购买将在下次初始化时发送到应用程序。
当返回 PurchaseProcessingResult.Complete
时,Unity IAP 会立即完成交易(如下图所示)。
如果您正在销售消耗性产品并从服务器完成它们(例如,在在线游戏中提供货币),则 必须不 返回 PurchaseProcessingResult.Complete
。
如果您这样做,如果您的应用程序在云保存发生之前被卸载,则可能会丢失消耗性购买。
如果您将消耗性购买保存到云端,则 必须 返回 PurchaseProcessingResult.Pending
,并且仅在您成功持久保存购买后才调用 ConfirmPendingPurchase
。
当返回 Pending
时,Unity IAP 会在底层商店中保持交易打开,直到确认已处理,从而确保即使用户在消耗性产品处于此状态时重新安装您的应用程序,也不会丢失消耗性购买。