AWS Amplify Swift API登录iOS移动应用程序
我遵循API实现登录的步骤AWS Amplify Swift API登录iOS移动应用程序,ios,rx-swift,aws-amplify,swift5.1,Ios,Rx Swift,Aws Amplify,Swift5.1,我遵循API实现登录的步骤 class AWSUserPool { var userAuthenticationError: Error? AWSMobileClient.default().signIn(username: <param username>, password: <param password>) { (signInResult, error) in if let error = error {
class AWSUserPool {
var userAuthenticationError: Error?
AWSMobileClient.default().signIn(username: <param username>, password: <param password>) { (signInResult, error) in
if let error = error {
print("\(error.localizedDescription)")
self.userAuthenticationError = error
} else if let signInResult = signInResult {
switch (signInResult.signInState) {
case .signedIn:
print("User is signed in.")
case .smsMFA:
print("SMS message sent to \(signInResult.codeDetails!.destination!)")
default:
print("Sign In needs info which is not yet supported.")
}
}
}
}
AWSUserPool类{
var userAuthenticationError:错误?
AWSMobileClient.default().signIn(用户名:,密码:){(signInResult,错误)在
如果let error=error{
打印(“\(错误。本地化描述)”)
self.userAuthenticationError=错误
}否则,如果让signInResult=signInResult{
开关(signInResult.signInState){
案例签名:
打印(“用户已登录”)
案例SMFA:
打印(“发送到\(signInResult.codeDetails!.destination!)的短信”)
违约:
打印(“登录需要尚未支持的信息”)
}
}
}
}
我已经实例化了该类,当提供了正确的凭据时,登录可以正常工作。我想向警报显示错误消息,但我可以打印可选错误(未找到用户…),但我无法将其分配给类变量
import RxSwift
let observable: Observable<Error?> = Observable<Error?>.just(self.awsUserPool?.userAuthenticationError)
let disposeBag = DisposeBag()
observable.subscribe { event in
print(event)
}
.disposed(by: disposeBag)
导入RxSwift
let observable:observable=observable.just(self.awsUserPool?.userAuthenticationError)
设disposeBag=disposeBag()
observable.subscribe{event in in
打印(事件)
}
.处置(由:处置人)
我会首先围绕AWSMobileClient
编写一个反应式包装,如下所示:
extension-Reactive-where-Base:AWSMobileClient{
func-signIn(用户名:String,密码:String)->可观察{
返回可观察的。在中创建{observer
self.base.signIn(用户名:用户名,密码:密码){(signinResult,error)在
如果让signinResult=signinResult{
observer.onNext(signinResult)
observer.onCompleted()
}
否则{
操作员错误(错误??错误未知)
}
}
返回一次性物品。创建()
}
}
}
然后,要将误差放入可观察对象中,请执行以下操作:
AWSUserPool类{
让userAuthenticationError:可观察
私有出租dispebag=dispebag()
初始化(用户名:字符串,密码:字符串){
让result=AWSMobileClient.default().rx.sign(用户名:用户名,密码:密码)
.具体化
结果
.compactMap{$0.element}
.subscribe(onNext:{签名结果为
开关信号结果。信号显示{
案例签名:
打印(“用户已登录”)
案例SMFA:
打印(“发送到\(signinResult.codeDetails!.destination!)的短信”)
违约:
打印(“登录需要尚未支持的信息”)
}
})
.处置(由:处置人)
userAuthenticationError=result.compactMap{$0.error}
}
}
不过我可能不会为AWSUserPool而烦恼。。。这取决于您。我将首先围绕
AWSMobileClient
编写一个反应式包装,如下所示:
extension-Reactive-where-Base:AWSMobileClient{
func-signIn(用户名:String,密码:String)->可观察{
返回可观察的。在中创建{observer
self.base.signIn(用户名:用户名,密码:密码){(signinResult,error)在
如果让signinResult=signinResult{
observer.onNext(signinResult)
observer.onCompleted()
}
否则{
操作员错误(错误??错误未知)
}
}
返回一次性物品。创建()
}
}
}
然后,要将误差放入可观察对象中,请执行以下操作:
AWSUserPool类{
让userAuthenticationError:可观察
私有出租dispebag=dispebag()
初始化(用户名:字符串,密码:字符串){
让result=AWSMobileClient.default().rx.sign(用户名:用户名,密码:密码)
.具体化
结果
.compactMap{$0.element}
.subscribe(onNext:{签名结果为
开关信号结果。信号显示{
案例签名:
打印(“用户已登录”)
案例SMFA:
打印(“发送到\(signinResult.codeDetails!.destination!)的短信”)
违约:
打印(“登录需要尚未支持的信息”)
}
})
.处置(由:处置人)
userAuthenticationError=result.compactMap{$0.error}
}
}
不过我可能不会为AWSUserPool而烦恼。。。这取决于你