11

IAPコインを購入したアプリがあります。最近、数人のユーザーからコインを購入できなかったというメールが届きました。私は彼らのセッションログを見て、失敗したIAPイベントを確認しました。それぞれ、失敗の理由は記録されていません。関連するコードは次のとおりです。

- (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];
 }

ログにFailedIAPイベントが表示されますが、失敗の理由はログに記録されません。「SKPaymentTransactionStateFailed」が表示されても、error.localizedDescriptionが空になる場合はありますか?ログが機能していることを確認でき、「支払いがキャンセルされました」、「iTunesに接続できません」などのエラーが他のデバイスに記録されています。この問題は、デバイスまたはiOSに固有のものではありません。

4

1 に答える 1

1

error次のシナリオでnil に遭遇しました。

  • ユーザーが自分のデバイスで iOS を更新します。

  • 更新の直後に、ユーザーはアプリにアクセスして購入を試みます。

  • 通常の購入ダイアログの代わりに、「iTunes の利用規約が変更されました。新しい T&C に同意する必要があります」(またはそれに沿った何か) というメッセージが表示され、iTunes アプリにリダイレクトされ、新しい T&C が表示されます。その後、支払いはキャンセルされ、 nil error、そして明らかにnil が返されますerror.localizedDescription

このシナリオが発生するためには、アプリは、システム アップデート後にユーザーが iTunes Store を操作する最初のポイントである必要があります。

于 2013-12-26T12:19:35.127 に答える