我一直使用相同的代码登录用户聊天。
var user = QBUUser()
user.ID = session.userID
user.login = "123456"
user.password = "password"
QBChat.instance().loginWithUser(user)但是在过去的5天里,我得到了一个错误,即用户必须登录才能聊天。
2015-08-11 12:13:48.690买方3063:73416-QBChat(反对) sendMessage:->返回。您必须登录才能使用聊天API。
有什么变化我不知道吗?
发布于 2015-08-11 10:02:32
确保您首先有一个有效的会话。下面是我正在使用的代码,它非常完美地工作,就像您使用完成句柄来确保用户在执行其他操作之前登录。
//MARK: - Completions
var logincompletion: ((success: Bool) -> ())?
//MARK: - Login
func loginUser(login: String, password: String, completion:
((success: Bool) -> ())? = nil) {
self.logincompletion = completion
var parameters: QBSessionParameters = QBSessionParameters()
parameters.userEmail = login
parameters.userPassword = password
QBRequest.createSessionWithExtendedParameters(parameters, successBlock: { (response: QBResponse!, session: QBASession!) -> Void in
var currentUser = QBUUser()
currentUser.ID = session.userID
currentUser.password = password
currentUser.login = login
QBChat.instance().addDelegate(self)
QBChat.instance().loginWithUser(currentUser)
}) { (response: QBResponse!) -> Void in
if self.logincompletion != nil {
self.logincompletion!(success: false)
}
}
}下面是我调用此代码的一个示例:
ChatManager.SharedInstance.loginUser(UserManager.SharedInstance.user!.email, password: UserManager.SharedInstance.user!.account_id) { (success) -> () in
println("Logged into QuickBlox: \(success)")
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
if appDelegate.deviceTokenData != nil {
var deviceIdentifier = UIDevice.currentDevice().identifierForVendor.UUIDString
QBRequest.registerSubscriptionForDeviceToken(appDelegate.deviceTokenData, uniqueDeviceIdentifier: deviceIdentifier, successBlock: { (response: QBResponse!, session: [AnyObject]!) -> Void in
println("registered for push")
}) { (error: QBError!) -> Void in
println("could not reigster for push: \(error)")
}
}
}
}https://stackoverflow.com/questions/31937982
复制相似问题