Как отключить отправку чата для определенного пользователя в групповом чате Quickblox

Я хочу отключить push-уведомления пользователю, который еще не принял запрос на группу.


person Jas_meet    schedule 05.05.2016    source источник


Ответы (1)


Примечание

Этот ответ действителен в соответствии с моим опытом работы с quickblox framework 2.7 и ниже. Поскольку quickblox очень часто выпускает новые версии фреймворка, вы можете найти лучший API для этого в будущем. До тех пор вы можете использовать этот подход.

Ответить

Я не думаю, что вы можете отключить push-уведомление для определенного пользователя в группе с помощью API Quickblox.

Когда вы отправляете сообщение (QBChat) группе, все в группе QBChatDialog получают сообщение, включая человека, который отправляет его сам.

Существует список конфиденциальности, чтобы запретить пользователю получать сообщения от определенных пользователей, но для этого требуется инициация со стороны пользователя. Так что я не думаю, что это поможет вам много здесь. Эту функцию можно использовать, чтобы заблокировать человека/группу от отправки сообщения пользователю.

Решение

Лучше всего было бы не добавлять пользователя в группу, пока пользователь не примет групповой запрос. Реализуйте свою собственную логику для отправки запроса каждому пользователю в группе и продолжайте добавлять пользователя, когда он/она принимает запрос.

1> Отправьте сообщение QBChat с определенным настраиваемым объектом с такими данными, как идентификатор группы, тип группы, имя группы и все другие необходимые данные, которые будут отличать его от других сообщений QBCat для всех пользователей в группе.

2> При получении этого специального сообщения покажите пользовательский интерфейс, предназначенный для работы с ним, например, предупреждение «Хотели бы вы присоединиться к группе ??» и кнопка принять или отклонить

3> Нажав «Принять», сделайте вызов WS на свой собственный сервер и в API вашего сервера добавьте пользователя в определенную группу, к которой он согласился присоединиться. Поскольку вы уже заполнили сообщение QBChat объектом, содержащим информацию о диалоге, вы сможете легко сообщить своему серверу, к какой группе присоединился пользователь.

После того, как пользователь присоединился к группе, он продолжит получать все сообщения в группе.

ИЗМЕНИТЬ

Вот подробный ответ на ваш вопрос в комментарии :)

Я был почти уверен, что вы зададите этот вопрос :)

Чтобы добавить идентификатор пользователя в существующую группу QBChatDialog, мы использовали остальные API Quickblox. Помните, я говорил вам не добавлять всех участников в группу изначально, добавляйте их по одному после того, как они примут участие в группе?? Когда пользователь соглашается присоединиться к группе, мы вызываем наш rest API, который, в свою очередь, вызывает API quickblox и добавляет текущий идентификатор пользователя в группу :)

Вы можете легко найти API для этого в разделе API Quickblox. Если вы не найдете его, дайте мне время до понедельника, я попрошу моего разработчика API и сообщу вам об этом же

При таком подходе есть CATACH.

В документах QB четко сказано, что только владелец группы может добавлять участников в группу. Это означает, что только потому, что у вас есть REST API, вы не можете добавить пользователя в группу. Вам потребуется действительный идентификатор сеанса владельца группы. Вы получите идентификатор сеанса при входе в систему, я думаю, вы очень хорошо это знаете :)

Как же я могу получить идентификатор сеанса владельца группы??

Вот подход, которого мы придерживались. Мы предвидели, что такие проблемы могут возникнуть задолго до того, как начали проект :)

Когда пользователь регистрируется с помощью нашего приложения, мы сохраняем его имя пользователя и пароль в базе данных нашего сервера, генерируем случайное имя пользователя и пароль и создаем учетную запись Quickblox с этим именем пользователя и паролем для пользователя, и мы сохраняем это имя пользователя, пароль и пользователь quickblox. идентификатор этого пользователя :)

Таким образом, хотя регистрация фактически имеет дело с двумя серверами, пользователь всегда будет чувствовать, что имеет дело с одним сервером, и он будет продолжать думать, что использует свое имя пользователя и пароль для входа в чат.

Но на самом деле, когда пользователь использует свое имя пользователя и пароль для входа в приложение в ответе на вход, мы получаем имя пользователя и пароль quickblox, которые сервер использовал для создания учетной записи. Получив его, приложение использует платформу QB для входа в учетную запись quickblox с этим именем пользователя и паролем :)

Таким образом, пользователь никогда не узнает свое имя пользователя, пароль и идентификатор пользователя quickblox :) Также дает нам большой контроль :)

При этом :) теперь, когда пользователь создает группу и отправляет специальное сообщение QBChat, содержащее пользовательский объект, в этом пользовательском объекте вместе с деталями диалога он также отправляет свой quickbloxuserid :)

Теперь, когда пользователь, получивший специальный QBChat, принимает запрос, мы извлекаем идентификатор диалога (к которому он собирается присоединиться) group_owner_id (идентификатор пользователя, создавшего диалог и отправившего это специальное сообщение) и отправляем его в наш API-интерфейс вместе с его собственный идентификатор :)

Как только API получает идентификатор владельца группы, он извлекает имя пользователя и пароль QB из своей базы данных и регистрируется с ним, получает действительный идентификатор сеанса и, наконец, добавляет пользователя в группу с этим идентификатором сеанса.

Примечание. Quickblox позволяет пользователю входить в систему на нескольких устройствах одновременно, что означает, что он поддерживает несколько действительных идентификаторов сеанса для пользователя.

Надеюсь, я ясно выразил свою точку зрения :) Удачного кодирования.

person Sandeep Bhandari    schedule 05.05.2016
comment
Есть ли способ добавить идентификаторы жильцов в существующую группу QBChatDialog? - person Jas_meet; 07.05.2016