【发布时间】:2017-09-21 19:34:13
【问题描述】:
你好朋友,我用QuickBlox 创建了一个应用程序。我要从管理面板创建一个 10 QBChatDialogTypePublicGroup。它是静态的。
我想从quickblox 管理面板创建静态公共组并与该组中的任何用户聊天。
我在 viewController 中获取所有组并显示它。然后用户可以选择任何组公开聊天。
我正在使用 quickblox 框架与用户聊天。我完成了QBChatDialogTypePrivate 一对一的用户作弊。
登录:
- (void)loginWithQuickBlox{
NSString *emaiAddress = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLogin"];
NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserPassword"];
[QBRequest logInWithUserLogin:emaiAddress password:password successBlock:^(QBResponse *response, QBUUser *user)
{
[[NSUserDefaults standardUserDefaults]setObject:[NSString stringWithFormat:@"%ld",(unsigned long)user.ID] forKey:@"USerLoginID"];
[self loginWithQuickBloxChat:user];
} errorBlock:^(QBResponse *response)
{
// error handling
NSLog(@"errorsssss : %@", response.error);
}];
}
使用 QuickBloxChat 登录
- (void)loginWithQuickBloxChat:(QBUUser *)selectedUser {
QBUUser *selectedUserx = [QBUUser user];
selectedUserx.login = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLogin"];
selectedUserx.password = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserPassword"];
selectedUserx.ID = [[[NSUserDefaults standardUserDefaults] objectForKey:@"USerLoginID"] integerValue];
NSLog(@"Currunt User : %@", [QBSession currentSession].currentUser);
[ServicesManager.instance logInWithUser:selectedUserx completion:^(BOOL success, NSString *errorMessage)
{
[[QBChat instance] connectWithUser:selectedUserx completion:^(NSError * _Nullable error) {
}];
if (success)
{
NSLog(@"Login in Quickblox : %@",selectedUser);
[self getPublicGroup];
}
else
{
NSLog(@"Error in QuickBlox : %@",errorMessage);
}
}];
}
获取公共组
- (void)getPublicGroup {
NSMutableDictionary *extendedRequest = @{@"type" : @(1)}.mutableCopy;
QBResponsePage *page = [QBResponsePage responsePageWithLimit:100 skip:0];
[QBRequest dialogsForPage:page extendedRequest:extendedRequest successBlock:^(QBResponse *response, NSArray *dialogObjects, NSSet *dialogsUsersIDs, QBResponsePage *page) {
publicGroupArray = dialogObjects.mutableCopy;
NSLog(@"Public Group : %@",publicGroupArray);
[self.groupCollectionview reloadData];
} errorBlock:^(QBResponse *response) {
}];
}
选择任何一个群组并使用 ChatViewcontroller 聊天
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
QBChatDialog *groupChatDialog = [publicGroupArray objectAtIndex:indexPath.row];
ChatViewController *chatViewController = [[ChatViewController alloc] init];
chatViewController.dialog = groupChatDialog;
chatViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:chatViewController animated:YES];
}
所有程序都运行良好,但是当我从ChatViewController 发送消息时,它会给我错误
-[QMChatService 中的断言失败 sendMessage:toDialogID:saveToHistory:saveToStorage:completion:], All/September/21/ChatApp/Pods/QMServices/QMChatService/QMChatService/QMChatService.m:1338
由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'对话框必须在 内存缓存! *** 首先抛出调用栈:
【问题讨论】:
标签: ios objective-c quickblox