Убедитесь, что у вас есть действующий сеанс. Вот код, который я использую, и он отлично работает, когда вы используете дескриптор завершения, чтобы убедиться, что пользователь зашел в систему, прежде чем делать что-либо еще.
//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)")
}
}
}
}
Привет Кадер, как вы получите код, доступна ли она в quickblox, я не мог найти документацию на стрижа. – Vinod