Quickblox错误:您未连接且未经授权

时间:2016-07-12 05:59:47

标签: ios objective-c quickblox

我知道这个问题已被多次询问,但没有一个问题解决了我的问题。

错误域名= com.quickblox.chat代码= 401"密码未经过验证" 实际上我试过这个:

- (void)viewDidLoad
{
    [super viewDidLoad];

    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    NSLog(@"bdsfbd %@",chatuserobj.fullName);
    NSLog(@"Chat Id %lu",(unsigned long)chatuserobj.ID);
    NSLog(@"Current User %@",[QBSession currentSession].currentUser);

    QBUUser *currentUserr = [QBUUser user];
    currentUserr.ID = appDelegate.loginUserId;
    currentUserr.password = appDelegate.loginUserPassword;

    // connect to Chat
    [QBRequest logInWithUserLogin:appDelegate.loginUser password:appDelegate.loginUserPassword successBlock:^(QBResponse *response, QBUUser *user)
    {
        chatDialog = [[QBChatDialog alloc] initWithDialogID:NULL type:QBChatDialogTypePrivate];
        chatDialog.occupantIDs = @[@(chatuserobj.ID)];
        [QBRequest createDialog:chatDialog successBlock:^(QBResponse *response, QBChatDialog *createdDialog)
         {
             NSLog(@"Created Dialog  %@",createdDialog);
         } errorBlock:^(QBResponse *response)
         {
             NSLog(@"Error  %@",response);
         }];            
    } errorBlock:^(QBResponse *response) {

    }];

    [[QBChat instance] connectWithUser:chatuserobj completion:^(NSError * _Nullable error)
     {
         NSLog(@"USer is Connected %@",error.description);
         [self startChat];
     }];

    [QBSettings setKeepAliveInterval:30];
    [QBSettings setAutoReconnectEnabled:YES];
}

和这个

-(void)startChat
{
    [[QBChat instance] addDelegate:self];
    QBChatMessage *message = [QBChatMessage message];
    [message setText:@"Hey there"];
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"save_to_history"] = @YES;
    [message setCustomParameters:params];
    [chatDialog sendMessage:message completionBlock:^(NSError * _Nullable error)
    {
        NSLog(@"Completed: %@",error.description);
    }];
}

我不知道我错在哪里。所以指出我的错误。

编辑:再次加载

- (void)viewDidLoad
{
    [super viewDidLoad];


    // connect to Chat


    [[QBChat instance] connectWithUser:currentUserr completion:^(NSError * _Nullable error)
     {
         NSLog(@"USer is Connected %@",error.description);
     }];

    dispatch_async(dispatch_get_main_queue(), ^(void)
        {
            [self chat];
        });
    dispatch_async(dispatch_get_main_queue(), ^(void)
                   {
                       [self startChat];
                   });
}

chat是为私人组或一对一连接创建对话框的方法

-(void)chat
{
    chatDialog = [[QBChatDialog alloc] initWithDialogID:NULL type:QBChatDialogTypePrivate];

    chatDialog.occupantIDs = @[@(chatuserobj.ID)];

    [QBRequest createDialog:chatDialog successBlock:^(QBResponse *response, QBChatDialog *createdDialog) {

    } errorBlock:^(QBResponse *response) {

    }];
}

开始聊天实际沟通

-(void)startChat
{
    [[QBChat instance] addDelegate:self];
    QBChatMessage *message = [QBChatMessage message];

    [message setText:@"Hey there"];

    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"save_to_history"] = @YES;

    [message setCustomParameters:params];

    [chatDialog sendMessage:message completionBlock:^(NSError * _Nullable error)
    {
        NSLog(@"Completed: %@",error.description);

    }];
}

现在发生此错误 UserInfo = {NSLocalizedRecoverySuggestion =您未与聊天相关联。

2 个答案:

答案 0 :(得分:2)

- (void)viewDidLoad
{
    [super viewDidLoad];


    // connect to Chat


    [[QBChat instance] connectWithUser:currentUserr completion:^(NSError * _Nullable error)
     {
         NSLog(@"USer is Connected %@",error.description);

         dispatch_async(dispatch_get_main_queue(), ^(void)

                        {
                             [self chat];


                        });


         dispatch_async(dispatch_get_main_queue(), ^(void)

                        {
                             [self startChat];


                        });

     }];



}

和开始聊天和聊天的方法相同。它运作良好

答案 1 :(得分:1)

[[QBChat instance] connectWithUser:chatuserobj completion:^(NSError * _Nullable error)
     {
         NSLog(@"USer is Connected %@",error.description);    
     }];

此方法用于将自己连接到聊天而不是对手。此外,为了连接此方法,您的QBUUser实例必须将有效密码设置为password属性。 基本上,您需要将自己连接到聊天,然后才开始创建对话框并发送消息。