Closed lexfoxer closed 3 years ago
@Lexfoxer Привет!
Вероятней всего проблема где то в реализации метода
func tokenizationModule(
_ module: TokenizationModuleInput,
didTokenize token: Tokens,
paymentMethodType: PaymentMethodType
)
протокола TokenizationModuleOutput
Там должен вызываться dismiss(animated:)
Пример реализации есть тут. Выглядит он так:
func tokenizationModule(_ module: TokenizationModuleInput,
didTokenize token: Tokens,
paymentMethodType: PaymentMethodType) {
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
self.dismiss(animated: true)
}
// Отправьте токен в вашу систему
}
Если у вас похожая реализация, то можете ее показать?
У меня приложение на react native.
В модуле код такой.
@Lexfoxer Сложно предположить почему так происходит. Судя по коду, dismiss должен вызываться 100%. Но могу предложить это проверить, например поставив breakpoint.
Если вызывается, и тень так и не пропадает, то можно попробовать (только попробовать !) вызвать dismiss 2 раза подряд.
Если тень пропадет то, можно предположить что проблема где то в вызовах dismiss до этого момента. В таком случае мне понадобится тестовый проект, или шаги по воспроизведению проблемы, т.к. такой кейс мне не встречался ранее, и воспроизвести у меня его не получилось.
Вызов dismiss 2 раза решает проблему...
Сделал через проверку
DispatchQueue.main.async {
self.viewController!.dismiss(animated: true)
if (self.viewController!.isViewLoaded && self.viewController!.view.window) {
self.viewController!.dismiss(animated: true)
}
}
Подозреваю, что это проблема в использовании react-native, так как перед отображением шторки появляются ошибки в логах:
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIViewController init]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
2021-01-12 14:33:11.617769+0300 appName[29143:2872062] [reports] Main Thread Checker: UI API called on a background thread: -[UIViewController init]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIViewController initWithNibName:bundle:]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
2021-01-12 14:33:26.072667+0300 appName[29143:2872062] [reports] Main Thread Checker: UI API called on a background thread: -[UIViewController initWithNibName:bundle:]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIViewController setTransitioningDelegate:]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
2021-01-12 14:33:26.415561+0300 appName[29143:2872062] [reports] Main Thread Checker: UI API called on a background thread: -[UIViewController setTransitioningDelegate:]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIViewController setModalPresentationStyle:]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
2021-01-12 14:33:26.751970+0300 appName[29143:2872062] [reports] Main Thread Checker: UI API called on a background thread: -[UIViewController setModalPresentationStyle:]
PID: 29143, TID: 2872062, Thread name: (none), Queue name: com.facebook.react.ShadowQueue, QoS: 33
...
@Lexfoxer
так как перед отображением шторки UI API called on a background thread
перед отображением шторки Apple Pay или самого SDK ?
если самого SDK, нужно обернуть этот вызов present
в DispatchQueue.main.async { ... }
например
let viewController = TokenizationAssembly.makeModule( ... )
DispatchQueue.main.async {
present(viewController, animated: true, completion: nil)
}
После успешной оплаты через Apple Pay не пропадает затемнение, которое появляется при выборе способа оплаты.
Подскажите, на чьей стороне эта проблема и как её решить?