Как настроить обработку ошибок, когда пользователь решает не покупать товар в iOS InApp Purchase? - PullRequest
2 голосов
/ 20 января 2012

Например, когда пользователя просят войти в систему во время покупки InApp, он может нажать кнопку «Отмена», после чего приложение загрузит

Can't connect to the iTunes Store

Можно ли использовать вместо этого наш собственный обратный вызовстандартное сообщение?

Ответы [ 3 ]

7 голосов
/ 24 января 2012

Я полагаю, что вы не получаете оповещение с сообщением "Не удается подключиться к iTunes Store", я подозреваю, что вы отображаете представление оповещения с ошибкой в ​​обратном вызове.

Я проверил на iOS 5и 4.3.если вы НЕ видите этот 4.3 и выше, я бы не беспокоился об этом.

Вы можете проверить, отменил ли пользователь транзакцию, с помощью следующего кода

Попробуйте следующий код внутри restoreCompletedTransactionsFailedWithError

if (!((error.code != SKErrorPaymentCancelled) && (error.code != SKErrorPaymentNotAllowed))){
    NSLog(@"User Cancelled");
}

Я знаю, это выглядит немного запутанно, но прекрасно работает, этоработает даже при отмене пользователем при восстановлении или новой покупке.

1 голос
/ 26 января 2012

Система не отображает никаких уведомлений при отмене покупки, это зависит от вашего приложения. См. Шаг № 10 в документации .

В основном это выглядит так:

Метод paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions вашего transactionObserver вызывается всякий раз, когда транзакция начинается, успешно или неудачно. Если это не удастся, -[SKPaymentTransaction error] будет содержать обычный NSError. Затем вы можете проверить его код и действовать соответственно.

Известные коды: (от <StoreKit/SKError.h>)

// error codes for the SKErrorDomain
enum {
    SKErrorUnknown,
    SKErrorClientInvalid,       // client is not allowed to issue the request, etc.
    SKErrorPaymentCancelled,    // user cancelled the request, etc.
    SKErrorPaymentInvalid,      // purchase identifier was invalid, etc.
    SKErrorPaymentNotAllowed    // this device is not allowed to make the payment
};

Возможно, вы хотите проверить хотя бы SKErrorPaymentCancelled и SKErrorPaymentNotAllowed.

Другим интересным моментом является то, что в NSError содержится localizedDescription, который вы можете отобразить в UIAlertView. Вот где, вероятно, появляется текст «Не удается подключиться к iTunes Store».

(Также, возможно, связано с этим: магазин песочницы, используемый для проверки покупки в приложении, является ненадежным, что может объяснить ошибку.)

0 голосов
/ 23 января 2012

Во время тестирования я не получал это сообщение при отмене входа в систему, а только сообщения, сгенерированные моим кодом:

Вы уверены, что не вызываете сообщение в методе SKPaymentQueue Callback paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactionsдля состояния транзакции SKPaymentTransactionStateFailed?

В случае отмены транзакции transaction.error.code устанавливается на SKErrorPaymentCancelled.В таких случаях можно пропустить любые всплывающие сообщения об ошибках или показать свои собственные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...