diff --git a/Sources/ProcessOutUI/Sources/Modules/NativeAlternativePayment/Interactor/NativeAlternativePaymentDefaultInteractor.swift b/Sources/ProcessOutUI/Sources/Modules/NativeAlternativePayment/Interactor/NativeAlternativePaymentDefaultInteractor.swift index ee83518a5..ac06d555a 100644 --- a/Sources/ProcessOutUI/Sources/Modules/NativeAlternativePayment/Interactor/NativeAlternativePaymentDefaultInteractor.swift +++ b/Sources/ProcessOutUI/Sources/Modules/NativeAlternativePayment/Interactor/NativeAlternativePaymentDefaultInteractor.swift @@ -142,7 +142,7 @@ final class NativeAlternativePaymentDefaultInteractor: let didOpenUrl: Bool switch currentState.redirect.type { case .deepLink: - didOpenUrl = await UIApplication.shared.open(currentState.redirect.url) + didOpenUrl = await openDeepLink(url: currentState.redirect.url) case .web: let authenticationRequest = POAlternativePaymentAuthenticationRequest( url: currentState.redirect.url, @@ -236,7 +236,7 @@ final class NativeAlternativePaymentDefaultInteractor: let didOpenUrl: Bool switch redirect.type { case .deepLink: - didOpenUrl = await UIApplication.shared.open(redirect.url) + didOpenUrl = await openDeepLink(url: redirect.url) case .web: let authenticationRequest = POAlternativePaymentAuthenticationRequest( url: redirect.url, @@ -902,6 +902,18 @@ final class NativeAlternativePaymentDefaultInteractor: ) return nil } + + // MARK: - Redirect Utils + + private func openDeepLink(url: URL) async -> Bool { + let options: [UIApplication.OpenExternalURLOptionsKey: Any] + if url.scheme == "https" || url.scheme == "http" { // Determines whether link could be universal + options = [.universalLinksOnly: true] + } else { + options = [:] + } + return await UIApplication.shared.open(url, options: options) + } } // swiftlint:enable file_length type_body_length