2012-01-19 58 views
1

在我處理購買時,我希望能夠檢測Apple的服務器是否停止運行,並彈出警報,指出Apple服務器不可用。聽起來很簡單,對吧?我遇到的問題是,我不確定是否有辦法確定Apple的服務器是否停止運行,或者用戶是否只是坐在Apple的「確認您的應用程序內購買」警報視圖。這基本上發生在此委託方法:在處理購買時檢測App Store何時不可用

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 

檢查交易的陣列transactionState,委託被稱爲上SKPaymentTransactionStatePurchasing進貨時開始,並SKPaymentTransactionStatePurchased購買完成後。沒有指示器彈出此警報對話框並且用戶確認,所以在這些情況下我無法可靠地彈出「不可用」消息。

我錯過了什麼,或者這是正確的嗎?其他人如何處理這個問題?

回答

2

如果交易失敗調用下面的方法:

- (void)failedTransaction:(SKPaymentTransaction *)transaction 
    { 
     NSLog(@"The error description is:%@",[transaction.error description]); 
     if (transaction.error.code != SKErrorUnknown) 
     { 
      // error! 
      //Your time to take over 
     } 

    } 

您應該檢查http://developer.apple.com/library/mac/#documentation/StoreKit/Reference/StoreKitTypes/Reference/reference.html

+0

爲什麼檢查SKErrorUnknown?我不想在這種情況下采取行動嗎? –

+0

你有沒有看到我發佈的鏈接..有些情況下,用戶將點擊取消在iTunes彈出,,,如果我點擊我不想購買...應該我彈出一個彈出..無法連接到iTunes的? – Shubhank

1

failedTransaction可以得到所謂的,因爲不同的原因。如果你正在尋找特定的商店,那麼這就是我在所有商店套件回調中所做的。

查找範圍由商店套件返回的錯誤代碼

if ([[error domain] isEqualToString:SKErrorDomain] 
{ 
    if ([[[[error userInfo] objectForKey:NSLocalizedDescriptionKey] lowercaseString] isEqualToString:@"cannot connect to itunes store"]) 
    { 
     // Show custome message to user that store is not available 
    } 
} 

還有一個條件,如果你能加入,只是爲了確保--->

[error code] == 0 

很抱歉的格式我從來沒有做對。 :)

相關問題