AuthNavigation
AuthNavigation是一个iOS库,能够组织您应用中的登录流程,使自动登录变得简单。AuthNavigation会自动检查用户是否需要登录,并基于结果展示正确的屏幕。
AuthNavigation还可以组织加载屏幕,例如需要发起服务器请求时。
您可以在一个或多个UIViewController
上设置AuthNavigation,它可以验证整个屏幕或其中的一部分。
AuthNavigation不是UINavigationController
的替代品,实际上您可以同时使用它们。
它不是什么
AuthNavigation并不是提供现成的登录和加载界面模板的。AuthNavigation提供的是创建带有额外加载页面的简单登录流程的导航结构,设计需要独立完成。
流程
以下是一个简单流程图的登录流程总结
安装
手册
您可以直接将文件从源
文件夹拖放到项目中,并使用这些类。
CocoaPods
CocoaPods是Cocoa项目的依赖管理器。要使用CocoaPods将AuthNavigation集成到您的Xcode项目中,请在您的Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'AuthNavigation', '~> 1.1'
end
使用方法
使用AuthNavigation有两种方式
-
基本(登录):
HostVC
被保护登录屏幕LoginVC
保护。AuthNavigation将检查是否要显示此登录屏幕 -
高级(登录 + 加载):基本加上在
LoginVC
之前显示的LoadingVC
。如果您需要要求服务器检查用户是否应登录,则可能很有用。
按照以下步骤将AuthNavigation集成到您的项目中
界面设置
为基本创建2个VC,为高级创建3个(为每个指定唯一的Storyboard ID)
HostVC设置
首先创建一个AUAuthNavigator
实例(您可以使用AUAuthNavigator.sharedInstance
或创建自己的静态实例)。然后设置LoginVC
和LoadingVC
的Storyboard ID到相应的属性。要实际使用认证器,在viewWillAppear
中调用startAuthentication
,并在viewDidDisappear
中调用stopAuthentication
。
class HostVC: UIViewController {
static let authNavigator = AUAuthNavigator()
override func viewDidLoad() {
super.viewDidLoad()
MainViewController.authNavigator.delegate = self
MainViewController.authNavigator.loginVCId = "LoginVC"
MainViewController.authNavigator.loadingVCId = "LoadingVC"
}
override func viewWillAppear(_ animated: Bool) {
MainViewController.authNavigator.startAuthentication()
}
override func viewWillDisappear(_ animated: Bool) {
MainViewController.authNavigator.stopAuthentication()
}
}
将认证器的委托设置为self
。因此HostVC
需要符合AUAuthenticatable
协议
extension HostVC: AUAuthenticatable {
func shouldLogin() -> Bool {
// Implement your authentication process here. If your user needs to login, return true, if he is already logged in return false
}
func willReturnFromLoginActions(success: Bool) {
// Additional actions after login (not necessary)
}
}
加载VC配置
完成自定义加载后,请在HostVC
的静态authNavigator
实例上调用finishLoading()
。
登录VC配置
登录完成后,请在HostVC
的静态authNavigator
实例上调用finishLogin(success: Bool)
。请记住,你可能需要在LoginVC
自身上处理登录失败,而不是调用finishLogin(success: false)
,因为这只会重新显示登录屏幕。
注销
请在您的HostVC
中调用logout(presentLoading: Bool)
。如果presentLoading
设置为true
,将显示加载屏幕;如果设置为false
,则直接显示登录屏幕。
AUAuthenticator的附加设置
hostView
:这是您的登录和加载屏幕的容器视图,如果您不想整个屏幕都被身份验证覆盖,将此设置为HostVC
中的特定视图可能非常有用。默认情况下,它设置为整个屏幕。overlayColor
:覆盖用于在授权期间隐藏您的HostVC
的内容。如果您需要此覆盖层具有特殊的颜色,请在此处指定它。默认行为是使用hostView
的背景颜色。animationDuration
:您可以在此处指定AUAuthNavigator(覆盖层、登录和加载淡入/淡出)的所有动画的自定义持续时间。
许可证
有关许可证权利和限制(MIT),请参阅LICENSE文件。
有关此项目的动机,请参阅这篇文章。