AWS Усиление аутентификации в SwiftUI - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу добавить экран входа в свое приложение, используя вход по умолчанию AWS (AWSMobileClient.default().showSignIn) в приложении SwiftUI. Я смог найти документацию о том, как реализовать это, используя раскадровки, но ничего не нашел в SwiftUI. Насколько я понимаю, SwiftUI имеет AppDelegate.swift вместо ViewController, а класс AppDelegate не имеет члена navigationController, поэтому self.navigationController! выдает ошибку.

Я знаю, что мне нужно отредактировать мой класс AppDelegate и запустить AWSMobileClient.default().initialize в пределах didFinishLaunchingWithOptions, но у меня возникают проблемы с выяснением, как это сделать.

Я хочу сделать это в AppDelegate, чтобы мне не пришлось вносить существенные изменения в мой ContentView в приложении с вкладками. Это то, что у меня сейчас в верхней части моего класса AppDelegate.

    import UIKit
    import AWSMobileClient
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {

        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
            let navigationController = application.windows[0].rootViewController as! UINavigationController
            initializeAWSMobileClient()
            return true
        }

        func initializeAWSMobileClient(){
            AWSMobileClient.default().initialize { (userState, error) in
                if let uState = userState {
                    if uState == .signedOut {
                AWSMobileClient.default().showSignIn(navigationController: self.navigationController!, { (uState2, error) in
                            print(uState2 ?? "none")
                            print(error?.localizedDescription ?? "no error")

                        })
                    }
                }
           }
        }

В настоящее время это дает мне ошибки в AWSMobileClient.default().showSignIn, потому что «класс AppDelegate не имеет члена navigationController» и предупреждение когда я пытаюсь инициализировать navigationController в didFinishLaunchingWithOptions, потому что «Инициализация неизменяемого значения« navigationController »никогда не использовалась».

Есть мысли о том, как мне лучше структурировать свой класс AppDelegate для обработки входа в систему?

Спасибо!

...