0

我在应用内购买恢复流程中遇到了很多麻烦。似乎我的一小部分用户无法正确恢复。我曾经有自己的自定义构建实现,但我发现它更难调试并决定切换到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) {
    //...
}];

我在这里唯一的猜测是受影响用户交易的 transactionState 不是SKPaymentTransactionStateRestored. 我已经与一些受影响的用户确认,他们都购买了高级版。他们的交易可能处于什么其他状态?

在这种情况下,我是否应该完成任何不是SKPaymentTransactionStateRestoredvia的交易[[SKPaymentQueue defaultQueue] finishTransaction:transaction];?这会恢复陷入这种状态的用户吗?

编辑:这是一个非消耗品购买,id 自创建以来一直相同。

4

0 回答 0