2013-03-15 29 views
10

我們有一個IAP硬幣購買的應用程序。我們最近收到了一些用戶的郵件,說他們無法購買任何硬幣。我查看了他們的會話日誌並看到失敗的IAP事件,每個事件都沒有記錄失敗原因。下面是相關的代碼: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」,但是,有一個空的error.localizedDescription?我可以確認日誌正常工作,並且看到其他設備中記錄的錯誤(如「付款已取消」)和「無法連接到iTunes」。該問題並非特定於設備或iOS。

+0

您的paymentQueue如何:updatedTransactions:方法看起來像。尤其是如何遍歷事務數組。 – neoneye 2013-09-29 22:55:22

回答

1

我在下面的情況下遇到了零error

  • 其設備上的用戶更新的iOS。

  • 立即更新後,用戶進入您的應用程序,並嘗試進行購買。

  • 而不是通常的購買對話框中,他們得到了「服務iTunes的條款已經改變了。你需要接受新型T & C'S」(或沿行的東西),它會將其重定向到iTunes應用程序,並顯示他們新的T & C的。付款然後被取消,你得到零error,顯然,沒有error.localizedDescription

要發生這種情況,系統更新後,您的應用程序需要成爲用戶與iTunes Store的第一個交互點。