2013-03-15 12 views
10

私は、IAPコイン購入のアプリを持っています。最近、いくつかのユーザーからコインを購入できなかったというメールを受け取りました。私はセッションログを見て失敗したIAPイベントを見ました。失敗した理由は記録されていませんでした。ここでは、関連するコードです:logFailIAP内部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]; 
    } 
} 

、私は時間のようなものをログに記録し、UDID、イベント名、およびerror.localizedDescription。

if (failReason != nil && failReason.length > 0) { 
     [metricsDictionary setObject:failReason forKey:MetricsEventParameterFailReason]; 
} 

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

+0

paymentQueue:updatedTransactions:メソッドはどのように見えますか?特にトランザクション配列をどのようにトラバースしますか? – neoneye

答えて

1

私は次のシナリオではnil errorが発生した:

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

  • 更新直後に、ユーザーはあなたのアプリに入り、購入を試みます。代わりに、通常の購入ダイアログの

  • 、彼らが得るiTunesのアプリにリダイレクトし、それらを示しており、(または線に沿って何か)「サービスのiTunesの用語が変更されました。あなたは、新しいT & Cさんを受け入れる必要があります」新しいT & C's。支払いが取り消されて、errorと、明らかにnil error.localizedDescriptionが返されます。

このような状況が発生するには、システムがアップデートされた後で、ユーザーのアプリケーションがiTunes Storeと最初にやりとりする必要があります。

関連する問題