Tia*_*ida 15 in-app-purchase ios
我试图找出确保用户不会在应用购买时丢失其耗材的最佳方法.
但是,我开始觉得这个StackOverflow用户.
在完成一笔交易之后,我想发送给用户在应用程序中购买耗材的服务器.但是,此时连接可能会失败(服务器已关闭或用户失去连接).
我正在考虑在那种情况下,一旦可以再次建立联系,就立即发送收据.但是,根据我的阅读,收据包含所有应用内购买,我不能只发送最后购买的物品的收据.
如何确保用户进行的购买与服务器同步?
Sam*_*low 15
解决方案是不打电话
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
在消耗品购买之前,直到它与服务器同步.这样,每次设置观察支付队列时,交易将再次发送给您的观察者.您需要管理应用程序端,无论是已交付但未同步的购买,还是新购买.
一旦您与服务器同步了事务.你可以打电话-finishTransaction:.请参阅此处文档中的"完成交易":
编辑
因此Apple向用户收费,Apple向您发送SKPaymentTransaction代表交易的对象.如果该交易的transactionState属性是SKPaymentTransactionStatePurchased,则表示Apple已处理付款并且用户已被收费.
SKPaymentTransaction从paymentQueue 收到此对象后,您将内容传递给用户,并将事务与您的服务器同步.一旦两个都成功完成,你打电话-finishTransaction.呼叫-finishTransaction告诉StoreKit您已成功完成了所需的一切.-finishTransaction是一个同步电话,你正在将责任交还给StoreKit你,你不需要关心如何将这些信息传回iTunes/Apple,StoreKit为你处理这一切.
-finishTransaction在完成您需要做的所有事情之前,不应该打电话.如果出现问题(设备电池耗尽,互联网连接丢失,应用程序崩溃),SKPaymentTransaction下次观察员在队列中注册时,您将从支付队列中获得相同的信息,并且可以尝试再次与您的服务器同步.这将一直发生,直到你打电话-finishTransaction.
有一种情况是用户永远无法与您的服务器同步,再也无法再连接到互联网等.这是您无法控制的,此时Apple决定是否向用户收费.
值得注意的是,如果用户愿意,用户可以联系Apple并要求退款.
| 归档时间: |
|
| 查看次数: |
1802 次 |
| 最近记录: |