【问题标题】:creating chat room in QuickBlox在 QuickBlox 中创建聊天室
【发布时间】:2012-12-17 21:18:01
【问题描述】:

我正在尝试使用我的 iOS 应用在 QuickBlox 中创建一个聊天室。

[[QBChat instance] createPrivateRoomWithName:@"My Room"];


- (void)createPrivateRoomWithName:(QBChatRoom*)room{
    NSLog(@"Private room %@ was created", room.name);

    // Add users to this room
    NSNumber *anny = [NSNumber numberWithInt:300];
    NSNumber *jim = [NSNumber numberWithInt:357];
    NSArray *users = [NSArray arrayWithObjects:anny, jim, nil];

    [[QBChat instance] addUsers:users toRoom:room];
}

但使用此代码后,我的应用程序崩溃了,下面是崩溃日志。

2013-01-03 19:13:55.234 Chat.Points[11178:23d03] +[QBDDXMLElement elementWithName:xmlns:]: unrecognized selector sent to class 0x22f73c
2013-01-03 19:13:55.241 Chat.Points[11178:23d03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[QBDDXMLElement elementWithName:xmlns:]: unrecognized selector sent to class 0x22f73c'
*** First throw call stack:
(0x32fe012 0x29eae7e 0x33892ad 0x32edbbc 0x32ed94e 0x101e05 0x2da153f 0x2db3014 0x2da3418 0x2da32a6 0x2da4280 0x2da3fcb 0x990f7b24 0x990f96fe)
libc++abi.dylib: terminate called throwing an exception

【问题讨论】:

    标签: iphone ios xmppframework quickblox


    【解决方案1】:

    您必须先登录 QuickBlox Chat,然后才能创建房间。

    解决办法是:

    1) 您必须将 -ObjC 标志添加到其他链接器标志

    2) 添加到 SplashController.h 聊天委托 QBChatDelegate

    @interface SplashController : UIViewController <QBActionStatusDelegate, FBServiceResultDelegate, FBSessionDelegate, QBChatDelegate>{
    

    3) 添加到 SplashController.m,

    如果

    }else if([result isKindOfClass:[QBMRegisterSubscriptionTaskResult class]]){
    

    在顶部的下一行:

        // Login to QuickBlox Chat
        //
        [[QBChat instance] setDelegate:self];
        [DataManager shared].currentQBUser.password = [NSString stringWithFormat:@"%u", [[[DataManager shared].currentFBUser objectForKey:kId] hash]];
        [[QBChat instance] loginWithUser:[DataManager shared].currentQBUser];
        //
        //
    

    4) 最后,添加到末尾

    #pragma mark-
    #pragma mark QBChatDelegate
    
    - (void)chatDidLogin{
        [[QBChat instance] createPrivateRoomWithName:@"ChatRRoom"];
    }
    
    - (void)chatRoomDidCreate:(QBChatRoom *)room{
        NSLog(@"Room did create %@", room);
        myRoom = [room retain];
    }
    

    【讨论】:

    • 我添加了-ObjC and -lxml2。在调试导航器中,我得到libsystem_kernel.dylib__pthread_kill:` PS:我正在开发ChattAR 应用程序。
    • 你有 SIGABRT,这意味着出了点问题。您能否启用僵尸跟踪并再次运行并查看日志
    • 现在我得到 -[QBDDXMLElement attributeFloatValueForName:withDefaultValue:]: unrecognized selector sent to instance 0xad6cf60 after add // Login to QuickBlox Chat // [[QBChat instance] setDelegate:self]; [DataManager shared].currentQBUser.password = [NSString stringWithFormat:@"%u", [[[DataManager shared].currentFBUser objectForKey:kId] hash]]; [[QBChat 实例] loginWithUser:[DataManager 共享].currentQBUser]; // //
    • @Ankur:你好,我遇到了同样的错误。你是怎么解决这个问题的?
    【解决方案2】:

    只需在目标设置的其他链接器标志中添加 -ObjC 标志。希望它能解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多