FastLogin
FastLogin 为 Turkcell 登录系统提供集成。我们开发了一个高度稳健、安全、轻量级、可配置且非常简单易嵌入的 SDK。
FastLogin IOS SDK 与 IOS 9.0 及以上版本兼容。Swift 3.2 及以上版本
入门
安装
按照以下步骤将其添加到您的 Podfile 中:
pod FastLogin, '#version'
注意
对于 Objective C 用户,
由于您无法在 Objective-C 中子类化 Swift 类。
使用 coordinatorDelegate 参数来获取回调,并处理以下方法
- (void)dgLoginToken:(NSString *)token {
}
- (void)dgLoginFailure:(NSString * _Nonnull)reason errorMessage:(NSString * _Nonnull)errorMessage {
}
- (void)dgConfigurationFailureWithConfigError:(NSString * _Nonnull)configError {
}
...
登录协调器
所有操作都通过LoginCoordinator类处理。您需要实例化它,并传入根视图控制器,即从该视图控制器启动(显示)登录过程。
class ViewController: UIViewController, LoginCoordinatorDelegate {
lazy var loginCoordinator: LoginCoordinator = {
let loginVC = LoginCoordinator( self)
loginVC.delegate = self
return loginVC
}()
...
@IBAction func startAction(_ sender: Any) {
loginCoordinator.start(dgFlow: .login)
}
@IBAction func registerAction(_ sender: Any) {
loginCoordinator.start(dgFlow: .register)
}
@IBAction func switchUserAction(_ sender: Any) {
loginCoordinator.start(dgFlow: .change_user)
}
@IBAction func logoutAction(_ sender: Any) {
loginCoordinator.logout()
}
...
之后,在协调器上调用start。就是这样!
自定义
如果想要自定义LoginCoordinator的UI,您应该提供一个DGTheme对象。
请参阅项目文档获取详细信息。
class LoginCoordinator: DigitalGate.DGLoginCoordinator {
}
启动
处理LoginCoordinator启动时需要执行的操作。请务必调用super。
启动登录过程之前,您需要提供以下参数:
-appID:由FastLogin管理员分配给每个应用的ID
-language:SDK的语言,默认为TR
-useTestServer:使用测试服务器或生产服务器
-disableCellLogin:如果为true,蜂窝登录功能将无法使用。
-autoLoginOnly:如果为true,只能使用蜂窝登录和记住我。
-disableAutoLogin:如果为true,登录过程将强制用户进行。
-accessGroup:应用程序的Keychain访问组(如有),
override func start(dgFlow: DGFlow) {
appID = "2"
useTestServer = true
disableAutoLogin = false
autoLoginOnly = false
disableCell = false
language = DGLanguage(from: "TR")
//accessGroup = ""
super.start(dgFlow: dgFlow)
configureAppearance()
}
完成回调
重写这些其它3个回调方法以处理用户尝试登录后的操作,
这里将调用您的自己的API。
override func login(token: String) {
// Handle login via your API
delegate?.loginSucceeded(token)
print("Login with: email =\(token)")
}
override func configurationFailure(configError: String) {
print(configError)
delegate?.loginConfigurationFailure(configError: configError)
}
override func failure(_ reason: String, errorMessage: String) {
if reason == dgKSessionTimeout as String {
print(errorMessage)
} else if reason == dgKUserExit as String {
print(errorMessage)
} else if reason == dgKNotLoginToLoginSDK as String {
print(errorMessage)
}
delegate?.loginFailure(reason, errorMessage: errorMessage)
}
登出
您可以通过调用logout()方法从SDK登出。
作者
Ahmet Ömer Nesim, [email protected]