Обнаружение отмененного входа в систему itunes для покупок в приложении - программирование
Подтвердить что ты не робот

Обнаружение отмененного входа в систему itunes для покупок в приложении

У меня есть класс, который реализует SKPaymentTransactionObserver. Однако при нажатии кнопки "купить", если пользователь не подписан в хранилище приложений, он получает предупреждение с запросом на существующий идентификатор или для создания нового. Если пользовательские клики отменили это действие или последующее оповещение учетных данных для входа в систему, я не получаю уведомления об этом отмене. У меня есть вид активности, охватывающий экран после нажатия кнопки покупки, поэтому мне действительно нужно знать, было ли отменено предупреждение о регистрации.

Я уже тестирую код ошибки SKErrorPaymentCancelled, и это работает, если процесс покупки отменяется после входа в систему. Я тестирую на устройстве.

Любые подсказки?

-UPDATE-

Извиняюсь, что забыл упомянуть, что это произошло только при попытке восстановить транзакции, и это показывает ответ: отсутствие знаний о протоколе.

4b9b3361

Ответ 1

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

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
    // test error.code, if it equals SKErrorPaymentCancelled it been cancelled
}

Ответ 2

В Swift 3.0

public func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error) {
        print("Cancel Transaction");
    }

Ответ 3

В Swift 2.2

public func paymentQueue(queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: NSError) {
    print("Cancel Transaction")

}

Ответ 4

Когда пользователь отменяет приглашение, в котором они вводят свои учетные данные Apple ID, состояние транзакции SKPaymentTransactionStateFailed. Это может сбивать с толку, потому что транзакция технически "не удалась", если пользователь добровольно вышел из процесса. Чтобы определить, действительно ли пользователь вышел из процесса, проверьте, не является ли код ошибки ошибки транзакции (доступ к которой равен transaction.error.code) SKErrorPaymentCancelled. Если это не так, у приложения действительно были проблемы с обработкой транзакции.