Настройка делегатов
Для нормальной работы 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
}
}
}
}