У нас есть приложение с покупками монет IAP. Недавно мы получили письма от нескольких наших пользователей, заявив, что они не могут купить какие-либо монеты. Я посмотрел их журналы сеансов и увидел Failed IAP events, каждый из которых не был зарегистрирован с ошибкой. Вот соответствующий код:SKPaymentTransactionStateFailed, но нет NSError
- (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];
}
В журналах я получаю неудачные события IAP, но не имеет причин для сбоев. Есть ли случай, когда вы получаете «SKPaymentTransactionStateFailed», но имеете пустую ошибку.localizedDescription? Я могу подтвердить, что журналы работают, и видели ошибки, такие как «Отмена платежа» и «Не удается подключиться к iTunes», которые регистрируются на других устройствах. Эта проблема не относится к устройству или iOS.
Как выглядит ваш метод paymentQueue: updatedTransactions: method. Особенно, как вы перемещаете массив транзакций. – neoneye