Как программно перейти после успешной аутентификации?

Я делаю приложение, используя платформу Digits, чтобы пользователи могли войти по своему номеру телефона. Учитывая это, я попытался найти способ перейти к следующему представлению после аутентификации пользователя, создав встраивание UINavigationController (в ViewController) в мою раскадровку и добавив кнопку, которая переходит в мой следующий просмотр. Я понимаю, что это не способ перейти после успешной аутентификации. Пожалуйста, посмотрите на мой код и дайте мне знать, что вы думаете / предлагаете:

func didTapButton(sender: AnyObject) {
    let digits = Digits.sharedInstance()
    let configuration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask)
    configuration.phoneNumber = "+345555555555"
    digits.authenticateWithNavigationViewController(navigationController, configuration: configuration, 
            completionViewController:  completionViewController) 
}

2 ответа

Решение

Теперь я понимаю проблему больше, пожалуйста, попробуйте это:

import UIKit
import DigitsKit
class LoginViewController: UIViewController {

override func viewDidLoad() {
        let digitsButton = DGTAuthenticateButton(authenticationCompletion: { (session, error) in
             if (session != nil) {
                print("Your Digits User ID is " + session.userID)
                 let map = MapVC()
                self.presentViewController(map, animated: true, completion: nil)
             }
             else {
                print(error.localizedDescription)
            }
        })
        self.view.addSubview(digitsButton)
    }
}

В качестве альтернативы можно использовать:

import UIKit
import DigitsKit
class LoginViewController: UIViewController {

override func viewDidLoad() {
    let digitsButton = DGTAuthenticateButton(authenticationCompletion: { (session, error) in
        if (session != nil) {
            print("Your Digits User ID is " + session.userID)
            self.performSegueWithIdentifier("mapVC", sender: self)
        }
        else {
            print(error.localizedDescription)
        }
    })
    self.view.addSubview(digitsButton)
}
}

Я надеюсь, что это работает:)

Я думаю, что ваш пример кода был взят из примера в документации Digits ( https://docs.fabric.io/apple/digits/sign-in-with-phone-number.html). Все это выглядит правильно для меня, я думаю, что вы на правильном пути.

Цифры позволяют вам создать учетную запись или войти в приложение с помощью телефонного номера.

Это правильный код для контроллера навигации, когда вы запускаете код:

func didTapButton(sender: AnyObject) {
let digits = Digits.sharedInstance()
let configuration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask)
configuration.phoneNumber = "+345555555555"
digits.authenticateWithNavigationViewController(navigationController, configuration:configuration, completionViewController:completionViewController)
}

Это выведет модальное поверх текущего контроллера просмотра. Пользователь зарегистрируется и проверит или войдет в систему, когда Digits подтвердит это, он отобразит ваш контроллер вида completionViewController,

Что касается вопроса, в UINavigationBar добавьте кнопку и создайте UIAction для вызова функции didTapButton при ее нажатии. Это тогда вызовет аутентификацию, которую вы хотите.

Если вы не хотите использовать с NavigationViewController, используйте:

func didTapButton(sender: AnyObject) {
    let digits = Digits.sharedInstance()
    digits.authenticateWithCompletion { (session, error) in
        // Inspect session/error objects
    }
}

И тогда вам придется самостоятельно обрабатывать вывод контроллера представления при успешной аутентификации.

Вы не можете создать свою собственную форму для использования с цифрами, это всегда модал, который всплывает сверху, но вы можете отформатировать его, чтобы он выглядел как ваше приложение.

configuration.phoneNumber = "+345555555555" может быть запутанным Это просто необязательное предварительное заполнение номера телефона в форме с цифрами. Цифры распознают +34 как испанский и 5555555555 как телефонный номер. Если вы не хотите, чтобы это удалили строку кода, вы также можете удалить номер телефона, оставив только код страны, и цифры будут предварительно заполнять код страны только в форме.

Вы также можете получить цифры для запроса адреса электронной почты пользователя. Это делается путем изменения let configuration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask) в let configuration = DGTAuthenticationConfiguration(accountFields: .Email)

Смотрите эту страницу для полных примеров того, как успешно реализовать: https://fabric.io/kits/ios/digits/features

Я надеюсь, что это помогает, не стесняйтесь задавать любые дополнительные вопросы:)

Другие вопросы по тегам