У нас есть приложение с покупками монет IAP. Недавно мы получили письма от нескольких наших пользователей, заявив, что они не могут купить какие-либо монеты. Я посмотрел их журналы сеансов и увидел Failed IAP events, каждый из которых не был зарегистрирован с ошибкой. Вот связанный код:
- (void)_purchaseRequestFailed:(SKPaymentTransaction *)transaction state:(StoreTransactionState)state error:(NSError *)error
{
IAPProduct *product = [self getProductWithId:transaction.payment.productIdentifier];
if (error.code==SKErrorPaymentCancelled) {
[_metricsManager logFailIAP:product failReason:@"Payment canceled"];
} else {
[_metricsManager logFailIAP:product failReason:error.localizedDescription];
}
if ([_delegate respondsToSelector:@selector(didSucceedPurchasingProduct:)]) {
[_delegate didFailPurchasingProduct:product];
}
}
внутри logFailIAP, я регистрирую такие вещи, как время, UDID, имя события и error.localizedDescription.
if (failReason != nil && failReason.length > 0) {
[metricsDictionary setObject:failReason forKey:MetricsEventParameterFailReason];
}
В журналах я получаю Failed IAP-события, но у меня нет причин для сбоев. Есть ли случай, когда вы получаете "SKPaymentTransactionStateFailed", но имеете пустую ошибку .localizedDescription? Я могу подтвердить, что журналы работают, и видели ошибки, такие как "Отмена платежа" и "Не удается подключиться к iTunes", которые регистрируются на других устройствах. Проблема не относится к устройству или iOS.