interceptApplication (_: didFinishLaunchingWithOptions :) 'устарела - PullRequest
0 голосов
/ 12 ноября 2018

Просто обновите AWSMobileClient с 2.6.8 до 2.7.0 и увидите следующую строку с предупреждением:

'interceptApplication (_: didFinishLaunchingWithOptions :)' устарел: этот метод будет удален в следующей вспомогательной версии. Пожалуйста, обновите, чтобы использовать AWSMobileClient, используя initialize. Пожалуйста, посетите https://aws -amplify.github.io для получения последней документации iOS.

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    return AWSMobileClient.sharedInstance().interceptApplication(
        application, didFinishLaunchingWithOptions:
        launchOptions)
}

Для меня не очевидно, что мы должны изменить interceptApplication. Действительно, есть функция initialize. Должны ли мы просто вставить это в application(didFinishLaunchingWithOptions: ) и вернуть true всегда?

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    AWSMobileClient.sharedInstance().initialize { (userState, error) in
        // ...
    }

    return true
}

1 Ответ

0 голосов
/ 15 ноября 2018

Я тоже испытывал ту же проблему на этой неделе.В последней документации , в частности в разделе initialization , вы увидите следующее:

Откройте AppDelegate вашего проекта Xcode или, возможно, в вашем View ControllerviewDidLoad () и вызовите процедуру инициализации

Итак, я сделал это, перейдя в AppDelegate и заменив:

return AWSMobileClient.sharedInstance().interceptApplication(application, didFinishLaunchingWithOptions: launchOptions)

На:

return true

Затем вviewDidLoad в вашем главном UIViewController вызовите процедуру инициализации в соответствии с документами:

import AWSMobileClient

override func viewDidLoad() {
    super.viewDidLoad()

    AWSMobileClient.sharedInstance().initialize { (userState, error) in
        if let userState = userState {
            print("UserState: \(userState.rawValue)")
        } else if let error = error {
            print("error: \(error.localizedDescription)")
        }
    }
}

После этого вы сможете использовать новый слушатель состояния пользователя для логики аутентификации вашего приложения:

AWSMobileClient.sharedInstance().addUserStateListener(self) { (userState, info) in
    switch (userState) {
        case .guest:
            print("user is in guest mode.")
        case .signedOut:
            print("user signed out")
        case .signedIn:
            print("user is signed in.")
        case .signedOutUserPoolsTokenInvalid:
            print("need to login again.")
        case .signedOutFederatedTokensInvalid:
            print("user logged in via federation, but currently needs new tokens")
        default:
            print("unsupported")
    }
}

И теперь вы также можете использовать getTokens:

AWSMobileClient.sharedInstance().getTokens { (tokens, error) in
    if let error = error {
        print("Error getting token \(error.localizedDescription)")
    }
    else if let tokens = tokens {
        print("id token: \(tokens.idToken!.tokenString!)")
        print("access token: \(tokens.accessToken!.tokenString!)")
    }
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...