Как программно перейти после успешной аутентификации?
Я делаю приложение, используя платформу 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
Я надеюсь, что это помогает, не стесняйтесь задавать любые дополнительные вопросы:)