Настройка делегатов

Для нормальной работы LoginSDK в методах типов, которые реализуют протоколы UIApplicationDelegate и UISceneDelegate, необходимо добавить вызов функций, описанных ниже.

Методы UIApplicationDelegate

  1. В методе application(_:didFinishLaunchingWithOptions:) необходимо вызвать метод activate(with:authorizationStrategy:) экземпляра класса YandexLoginSDK, активирующий LoginSDK. Если были выполнены не все настройки приложения, вызов метода закончится ошибкой.
  2. В методе application(_:open:options:) необходимо вызвать метод handleOpenURL(_:) экземпляра класса YandexLoginSDK, получающий токены. Если результат не будет получен, вызов метода закончится ошибкой. Чтобы избежать обработки ошибок, используйте метод tryHandleOpenURL(_:).
  3. В методе 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
            }
        }
    }

}
Предыдущая
Следующая