我们正在使用QuickBlox的iOS SDK进行聊天实施.
目前我们只有两个视图控制器1).登录和2).在UserList
成功登录app后,在此视图中移动到UserList视图,我们有Logout按钮.根据QuickBlox API,我们使用以下方法进行注销
[QBUsers logOutWithDelegate:self];
按钮单击及其委托方法:
- (void)completedWithResult:(Result *)result { if([result isKindOfClass:[QBUUserLogOutResult class]]) // QuickBlox User Logout result { // Success result if(result.success) { [self.navigationController popToRootViewControllerAnimated:YES]; } } }
成功注销后,应用程序返回登录界面.
问题:
当用户点击退出并且应用程序移动到登录屏幕时,如果用户输入相同的用户名和密码,则再次登录打印
Chat App[3183:5903] -[QBChat loginWithUser:] -> return. Already logged in
如何解决这个问题?或者实施登录/注销流程的最佳实践是什么?
根据SDK参考,存在会话,只需用户登录和登录聊天即可.
1)你需要创建会话.您可以简单地创建它:
[QBAuth createSessionWithDelegate:self];
或者有扩展请求:
QBASessionCreationRequest *extendedAuthRequest = [QBASessionCreationRequest request]; extendedAuthRequest.userLogin = @"garry"; extendedAuthRequest.userPassword = @"garrySant88"; [QBAuth createSessionWithExtendedRequest:extendedAuthRequest delegate:self];
(如果使用扩展请求创建会话,则通过第二个操作)
2)执行简单登录
[QBUsers logInWithUserLogin:currentUser password:pass delegate:self]
3)之后使用聊天:
[[QBChat instance] loginWithUser:currentUser];
对于注销,您应该按顺序执行注销方法.
[[QBChat instance] logout];
之后:
[QBUsers logOutWithDelegate:self];
和:
[QBAuth destroySessionWithDelegate:self];
不一定重新开放会话.您可以创建一个会话并多次登录/注销.