36. Открываем диплинки в другие приложения
Иногда нужно открыть диплинк (ссылку), ведущий в другое приложение, которое принадлежит другой компании. В этой статье покажу как просто это реализовать.
https://t.me/easy_dev991(стандартная ссылка)otherApp://linkToSupport(диплинк для другого приложения)
Добавим на экран две кнопки, по нажатию на которые должны открываться ссылки:
Для проверки, может ли система открыть ссылку, достаточно применить метод canOpenURL и сложить проверку в модификатор disabled:
import SwiftUI
struct ThirdPartyDeeplinkExample: View {
struct Model: Identifiable {
let id = UUID()
let title: String
let url: URL
/// Проверка на возможность открытия ссылки
var canOpenURL: Bool {
UIApplication.shared.canOpenURL(url)
}
}
private let items: [Model] = [
.init(title: "Telegram", url: .init(string: "https://t.me/easy_dev991")!),
.init(title: "OtherApp", url: .init(string: "otherApp://linkToSupport")!)
]
var body: some View {
VStack(spacing: 20) {
ForEach(items) { item in
Button(item.title) {
UIApplication.shared.open(item.url)
}
.font(.title.bold())
.disabled(!item.canOpenURL) // <- делаем кнопку недоступной, если ссылку нельзя открыть
}
}
}
}
Теперь кнопку с диплинком нажать нельзя:
Чтобы поправить ситуацию, нужно настроить LSApplicationQueriesSchemes в info.plist:
Теперь единственное условие для активации кнопки и перехода по диплинку - наличие соответствующего приложения на девайсе, в нашем случае otherApp.
Это может пригодиться, например, на экране перечисления информационных каналов компании в других соц.сетях, и нужно явно показать пользователю, может ли он перейти по ссылке (в том числе диплинку), или нет.
Код для этой статьи можно посмотреть тут, а другие статьи - тут.