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文件。
有关此项目的动机,请参阅这篇文章。

