2015-06-11 3 views
1

Я работаю над быстрым и быстрым блогом, и я пытаюсь общаться между пользователями. Аутентификация пользователя и вход работает его только что чат не Logging в течение какой-то причине Кодекса вопрос:QuickBlox Чат не входит в систему

   QBRequest.createSessionWithExtendedParameters(parameters, successBlock: { (response : QBResponse! ,session : QBASession!) -> Void in 

       var currentUser = QBUUser() 
       currentUser.ID = session.userID 
       currentUser.password = userPassword as String 
       QBChat().addDelegate(self) 
       QBChat().loginWithUser(currentUser) 



       let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
       appDelegate.initiateLocationServicesUpdates() 

       self.boxView.removeFromSuperview() 

       self.performSegueWithIdentifier("alreadySignedInSegue", sender: self) 


       }, errorBlock: { (response : QBResponse!) -> Void in 
        self.boxView.removeFromSuperview() 
        NSLog("error: %@", response.error); 
        self.view.userInteractionEnabled = true 
        var alert : UIAlertController = UIAlertController() 
        let action : UIAlertAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil) 
        if let error = response.error.reasons{ 
         if response.error.reasons.description.rangeOfString("Unauthorized") != nil{ 
          alert = UIAlertController(title: "Oops", message: "Wrong Username/Password Combination", preferredStyle: UIAlertControllerStyle.Alert) 
          alert.addAction(action) 
          self.presentViewController(alert, animated: true, completion: nil) 
         } 
        } 
        else{ 
         alert = UIAlertController(title: "Oops", message: "Something Went Wrong, Its Our Fault!", preferredStyle: UIAlertControllerStyle.Alert) 
         alert.addAction(action) 
         self.presentViewController(alert, animated: true, completion: nil) 
        } 
      }) 

Segue найдены в успех блока работ, но ценности QBChat() .isLoggedIn() всегда ложно, и если я пытаюсь отправить сообщение с идентификатором пользователя с помощью функции

QBChat().sendMessage(message: QBChatMessage!) 

Я в конечном итоге получить сообщение «Must мне войти в чат, чтобы иметь возможность отправить» , Это должна быть небольшая проблема, из-за которой я что-то пропускаю.

edit: только так вы знаете, что это мой первый раз, работая с quickblox, поэтому, пожалуйста, если быть точным о том, что я делаю неправильно

ответ

2

Вы должны использовать общий экземпляр QBChat для работы с чатом.

QBChat.instance().addDelegate(self) 
QBChat.instance().loginWithUser(currentUser) 

проверить Также

setAutoCreateSessionEnabled 

метод в QBConnection. Вы можете забыть о сеансовом управлении.

0

Пожалуйста, проверьте мой код, работающий на языке Objective-C.

Для получения дополнительной информации любезно check

// Login to QuickBlox Chat 
[[ChatService instance] loginWithUser:[LocalStorageService shared].currentUser completionBlock:^{ 
    NSLog(@"------------local sotrage Logged In user=%@", [LocalStorageService shared].currentUser); 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You have successfully logged in" 
                   message:nil 
                   delegate:nil 
                 cancelButtonTitle:@"Ok" 
                 otherButtonTitles: nil]; 
    [alert show]; 
    // 
    // hide alert after delay 
    double delayInSeconds = 2.0; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [alert dismissWithClickedButtonIndex:0 animated:YES]; 
    }); 



    [[UserChoice sharedUserChoice]setIsConnectedUser:1]; 
    MySlideViewController *slideViewController = [[MySlideViewController alloc] initWithNibName:@"SlideViewController" bundle:nil]; 
    slideViewController.myDataUser = resultG; 
    slideViewController.delegate = slideViewController; 
    [[UserChoice sharedUserChoice] setMyUserProfile:resultG]; 
    slideViewController.myDataUserIn = [[UserChoice sharedUserChoice]myUserProfile]; 
    slideViewController.paramGeolocalisation = paramGeo; 
    [self.navigationController pushViewController:slideViewController animated:YES]; 
    self.navigationController.navigationBarHidden = YES; 

}]; 

или делать это

// login to Chat 
[[QBChat instance] loginWithUser:currentUser]; 

#pragma mark - 
#pragma mark QBChatDelegate 

// Chat delegate 
-(void) chatDidLogin{ 
    // You have successfully signed in to QuickBlox Chat 

    // Now you can send a message 

} 
+0

Я использую второй метод. Функция chatDidLogin не запущена. Делегат настроен на текущий контроллер его QBChatDelegate – DatForis

+0

попробуйте создать нового пользователя – iphonemaclover

+0

Вы должны хотя бы попытаться преобразовать его в Swift ... – akashivskyy

Смежные вопросы