Настройка делегатов
Для нормальной работы LoginSDK в методах типов, которые реализуют протоколы UIApplicationDelegate и UISceneDelegate, необходимо добавить вызов функций, описанных ниже.
Методы UIApplicationDelegate
- В методе
application(_:didFinishLaunchingWithOptions:)необходимо вызвать методactivate(with:authorizationStrategy:)экземпляра классаYandexLoginSDK, активирующий LoginSDK. Если были выполнены не все настройки приложения, вызов метода закончится ошибкой. - В методе
application(_:open:options:)необходимо вызвать методhandleOpenURL(_:)экземпляра классаYandexLoginSDK, получающий токены. Если результат не будет получен, вызов метода закончится ошибкой. Чтобы избежать обработки ошибок, используйте методtryHandleOpenURL(_:). - В методе
application(_:continue:restorationHandler:)необходимо вызвать методhandleUserActivity(_:)экземпляра классаYandexLoginSDK, получающий код авторизации. Если результат не будет получен, вызов метода закончится ошибкой. Чтобы избежать обработки ошибок, используйте методtryHandleUserActivity(_:).
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
do {
let clientID = "[client id]"
try YandexLoginSDK.shared.activate(with: clientID)
} catch {
// handle error
}
return true
}
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
do {
try YandexLoginSDK.shared.handleOpenURL(url)
} catch {
// handle error
}
return true
}
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
) -> Bool {
do {
try YandexLoginSDK.shared.handleUserActivity(userActivity)
} catch {
// handle error
}
return true
}
}
Методы UISceneDelegate
Если приложение использует сцены, то методы для открытия URL работают через протокол UISceneDelegate.
В методе scene(_:openURLContexts:) необходимо вызвать метод handleOpenURL(_:) экземпляра класса YandexLoginSDK, получающий токены. Если результат не будет получен, вызов метода закончится ошибкой. Чтобы избежать обработки ошибок, используйте метод tryHandleOpenURL(_:).
@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
func scene(
_ scene: UIScene,
openURLContexts URLContexts: Set<UIOpenURLContext>
) {
for urlContext in URLContexts {
let url = urlContext.url
do {
try YandexLoginSDK.shared.handleOpenURL(url)
} catch {
// handle error
}
}
}
}
Была ли статья полезна?
Предыдущая
Следующая