与 Quickblox 聊天时会创建多个对话框
Multiple dialogs are created when chatting Quickblox
正在为群组创建聊天对话框。
例如,用户 A 正在创建对话框,而用户 B 想要使用该对话框。
但有时会出现用户 A 创建一个对话框然后用户 B 创建另一个对话框的情况。
因此,由于两个不同的对话,他们无法相互聊天。
下面是我用来创建对话框的代码:-
-(void) moveToChatView:(QBChatDialog *)chatDialog ObjFriend:(Friend *)objFriend
{
[QBRequest createDialog:chatDialog successBlock:^(QBResponse *response, QBChatDialog *createdDialog)
{
// Success, do something
}
errorBlock:^(QBResponse *response)
{
}];
}
编辑:- 是否有类似 createOrJoinRoomWithName 的方法??
如果你想在群聊中添加用户,那么你需要更新群对话。
QBChatDialog *updateDialog = [[QBChatDialog alloc] initWithDialogID:@"53aac645535c12bd3b008a40" type:QBChatDialogTypeGroup];
updateDialog.pushOccupantsIDs = @[@"300", @"301", @"302"];
updateDialog.name = @"school friends";
[QBRequest updateDialog:updateDialog successBlock:^(QBResponse *responce, QBChatDialog *dialog) {
} errorBlock:^(QBResponse *response) {
}];
有关详细信息,请查看此 Update_group_dialog
以及群组对话检查 Chat_in_group_dialog
别忘了使用委托方法。
pragma mark QBChatDelegate
- (void)chatRoomDidReceiveMessage:(QBChatMessage *)message fromDialogId:(NSString *)dialogId{
}
编辑 1:- 您将通过检索所有对话框获得 DialogId。
QBResponsePage *page = [QBResponsePage responsePageWithLimit:100 skip:0];
[QBRequest dialogsForPage:page extendedRequest:nil successBlock:^(QBResponse *response, NSArray *dialogObjects, NSSet *dialogsUsersIDs, QBResponsePage *page) {
} errorBlock:^(QBResponse *response) {
}];
编辑 2:- 要在创建新对话框时知道 dialogId 使用 createChatNotificationForGroupChatCreation 方法。
- (QBChatMessage *)createChatNotificationForGroupChatCreation:(QBDialog *)dialog
{
// create message:
QBChatMessage *inviteMessage = [QBChatMessage message];
NSMutableDictionary *customParams = [NSMutableDictionary new];
customParams[@"xmpp_room_jid"] = dialog.roomJID;
customParams[@"name"] = dialog.name;
customParams[@"_id"] = dialog.ID;
customParams[@"type"] = @(dialog.type);
customParams[@"occupants_ids"] = [dialog.occupantIDs componentsJoinedByString:@","];
// Add notification_type=1 to extra params when you created a group chat
//
customParams[@"notification_type"] = @"1";
inviteMessage.customParameters = customParams;
return inviteMessage;
}
正在为群组创建聊天对话框。 例如,用户 A 正在创建对话框,而用户 B 想要使用该对话框。 但有时会出现用户 A 创建一个对话框然后用户 B 创建另一个对话框的情况。 因此,由于两个不同的对话,他们无法相互聊天。 下面是我用来创建对话框的代码:-
-(void) moveToChatView:(QBChatDialog *)chatDialog ObjFriend:(Friend *)objFriend
{
[QBRequest createDialog:chatDialog successBlock:^(QBResponse *response, QBChatDialog *createdDialog)
{
// Success, do something
}
errorBlock:^(QBResponse *response)
{
}];
}
编辑:- 是否有类似 createOrJoinRoomWithName 的方法??
如果你想在群聊中添加用户,那么你需要更新群对话。
QBChatDialog *updateDialog = [[QBChatDialog alloc] initWithDialogID:@"53aac645535c12bd3b008a40" type:QBChatDialogTypeGroup];
updateDialog.pushOccupantsIDs = @[@"300", @"301", @"302"];
updateDialog.name = @"school friends";
[QBRequest updateDialog:updateDialog successBlock:^(QBResponse *responce, QBChatDialog *dialog) {
} errorBlock:^(QBResponse *response) {
}];
有关详细信息,请查看此 Update_group_dialog
以及群组对话检查 Chat_in_group_dialog
别忘了使用委托方法。
pragma mark QBChatDelegate
- (void)chatRoomDidReceiveMessage:(QBChatMessage *)message fromDialogId:(NSString *)dialogId{
}
编辑 1:- 您将通过检索所有对话框获得 DialogId。
QBResponsePage *page = [QBResponsePage responsePageWithLimit:100 skip:0];
[QBRequest dialogsForPage:page extendedRequest:nil successBlock:^(QBResponse *response, NSArray *dialogObjects, NSSet *dialogsUsersIDs, QBResponsePage *page) {
} errorBlock:^(QBResponse *response) {
}];
编辑 2:- 要在创建新对话框时知道 dialogId 使用 createChatNotificationForGroupChatCreation 方法。
- (QBChatMessage *)createChatNotificationForGroupChatCreation:(QBDialog *)dialog
{
// create message:
QBChatMessage *inviteMessage = [QBChatMessage message];
NSMutableDictionary *customParams = [NSMutableDictionary new];
customParams[@"xmpp_room_jid"] = dialog.roomJID;
customParams[@"name"] = dialog.name;
customParams[@"_id"] = dialog.ID;
customParams[@"type"] = @(dialog.type);
customParams[@"occupants_ids"] = [dialog.occupantIDs componentsJoinedByString:@","];
// Add notification_type=1 to extra params when you created a group chat
//
customParams[@"notification_type"] = @"1";
inviteMessage.customParameters = customParams;
return inviteMessage;
}