2012-01-19 2 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 может вызываться по разным причинам. если вы ищете конкретное хранилище, то это то, что я делаю во всех обратных вызовах магазина.

Посмотрите на код ошибки, возвращаемый магазина Kit

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 

Извините за форматирование Я никогда не понимаю. :)

Смежные вопросы