Я хочу запустить обе функции в моем коммутаторе, но запускается только одна;Как это исправить? - PullRequest
0 голосов
/ 31 января 2019

Следующая функция описывает paymentQueue покупки в приложении (IAP).Когда выбран вариант .purchase, запускается функция 'SKPaymentQueue.default (). FinishTransaction (транзакция)'.Однако вторая функция в этом случае ,actionComplete () не выполняет.

То, что я хочу: сначала необходимо выполнить функцию SKPaymentQueue.default (). FinishTransaction (транзакция), а затем запуститьФункция routComplete ().

Фон:

SKPaymentQueue.default (). finishTransaction (транзакция) - это пустая функция StoreKit, которая завершает транзакцию IAP.

«ActionComplete () »- это моя собственная функция, которая отображает всплывающее окно, в котором пользователь благодарит за покупку.Эта функция работает, но только не в этом сценарии.

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        switch transaction.transactionState {
            case .purchased:
                SKPaymentQueue.default().finishTransaction(transaction)
                transactionComplete()
                break
            case .failed:
                print("transaction failed.")
                break
            default:
                break
        }
    }
}

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Поскольку я впервые использовал IAP, я экспериментировал сфункции.Таким образом, оказалось, что у меня была другая копия функции paymentQueue (...) в другом файле, из которого мое приложение читало из-за класса, которому оно принадлежало для использования в качестве наблюдателя в AppDelegate.swift

1 Ответ

0 голосов
/ 31 января 2019

Этот метод, вероятно, не запускается в главном потоке.

Попробуйте использовать print("isMain? \(Thread.current.isMainThread)"), чтобы выяснить, если это, если нет, обернуть ваш обратный вызов следующим образом:

DispatchQueue.main.async {
    transactionComplete()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...