在恢复流程期间,iOS事务不在SKPaymentTransactionStateRestored状态

时间:2017-08-09 19:20:18

标签: ios transactions in-app-purchase rmstore

我在应用内购买恢复流程中遇到了很多麻烦。似乎我的一小部分用户无法正常恢复。我曾经有自己的自定义构建实现,但我发现调试更难,并决定切换到RMStore

这不是[[RMStore defaultStore] restoreTransactionsOnSuccess:^(NSArray *transactions){ if ([SKPaymentQueue defaultQueue].transactions.count == 0) { [self.tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"RESTORE" action:@"failure" label:@"no_purchases" value:nil] build]]; [self fail:@"There are no items available to restore at this time."]; } else { // seems to be triggered every time a successful restore made if there are items [self.tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"RESTORE" action:@"success" label:@"items_in_queue" value:nil] build]]; for (SKPaymentTransaction *transaction in transactions) { if (transaction.transactionState == SKPaymentTransactionStateRestored) { if ([transaction.payment.productIdentifier isEqualToString:(NSString*)productID]) { [Utils setPremium:YES]; } } } [self success]; } } failure:^(NSError *error) { //... }]; 的错误 - 在我切换到使用它之前它已存在。

通过我的分析,似乎有些用户点击了恢复成功案例,但从未成功触发高级状态。恢复代码如下。

SKPaymentTransactionStateRestored

我唯一的猜测是受影响用户的交易的事务状态不是SKPaymentTransactionStateRestored。我已与一些受影响的用户确认,他们都购买了高级版本。他们的交易还有什么其他州?

在这种情况下,我是否应该[[SKPaymentQueue defaultQueue] finishTransaction:transaction];通过var mozFocused = false; document.addEventListener('keypress', (event) => { document.querySelector('#input').focus(); var isFirefox = typeof InstallTrigger !== 'undefined'; if (isFirefox && !mozFocused && event.key.length === 1) { mozFocused = true; document.querySelector('#input').value += event.key; } }); document.querySelector('#input').addEventListener('blur', (event) => { mozFocused = false; });完成任何交易?这会恢复陷入此状态的用户吗?

修改:这是一项非消费品购买,ID自创建以来一直保持不变。

0 个答案:

没有答案