在收到苹果应用内购买的购买收据之前失去连接
Lost connectivity before receiving purchase receipt from apple In-app purchase
我在我的应用中实现了应用内购买。所以我要做的是,在用户完成应用商店付款后,控件转到
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions
然后我将购买收据更新到我们的服务器。其余操作由服务器完成。
但是我们的一位用户遇到了一个问题,他完成了付款,但在调用上述方法之前他失去了互联网连接。结果,我们的应用程序不知道付款。
我知道收据存储在设备中。但是,每次用户使用应用程序时,将收据从设备发送到服务器的正确方法吗??
好吧,我为避免这种情况所做的是,在交易开始时以及在我向服务器发送数据时将值更改为“没有".
以这种方式下次应用程序连接。只需检查 transactionInProgress
是否已被检查,如果是,则交易正在进行,您可以使用
获取必须由 SKPaymentTransactions 存储的收据
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if (!receipt) { /* No local receipt -- handle the error. */ }
我在我的应用中实现了应用内购买。所以我要做的是,在用户完成应用商店付款后,控件转到
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions
然后我将购买收据更新到我们的服务器。其余操作由服务器完成。
但是我们的一位用户遇到了一个问题,他完成了付款,但在调用上述方法之前他失去了互联网连接。结果,我们的应用程序不知道付款。
我知道收据存储在设备中。但是,每次用户使用应用程序时,将收据从设备发送到服务器的正确方法吗??
好吧,我为避免这种情况所做的是,在交易开始时以及在我向服务器发送数据时将值更改为“没有".
以这种方式下次应用程序连接。只需检查 transactionInProgress
是否已被检查,如果是,则交易正在进行,您可以使用
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if (!receipt) { /* No local receipt -- handle the error. */ }