我在应用内购买恢复流程中遇到了很多麻烦。似乎我的一小部分用户无法正常恢复。我曾经有自己的自定义构建实现,但我发现调试更难,并决定切换到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自创建以来一直保持不变。