Quickblox iOS: подключение 2 пользователей в видеочате без инициирования звонка

У меня есть требование видеочата, в котором я должен подключить 2 (несколько связанных) пользователей через видеочат. Я не нахожу необходимого API для вызова, отсюда и вопрос.

В основном я следую этому руководству, но, похоже, в нем нет всего, что мне нужно. Мне не нужна явная функция типа «вызов этому пользователю». Пользователь никогда не увидит весь список пользователей.

В результате я задаюсь вопросом, могу ли я иметь X звонящих пользователей и еще X пользователей, ожидающих ответа на этот звонок.

Подводя итог:

Я просто хочу связать пользователей на основе некоторых характеристик (например, их зарегистрированных тегов). Для любого пользователя A может быть более одного пользователя с такими же тегами, как у A, поэтому все они являются потенциальными пользователями видеочата для пользователя A.

Мне нужно выбрать один из них (может работать случайный) и передать видео/аудио A среди них.

Что я должен сделать? Вот неполный список, но я не знаю, я прав в конце.

1 - Позвонить [QBAuth createSessionWithDelegate:self]

2 - Из полученного сеанса вызовите [QBUsers logInWithUserLogin]

3 - Из полученного сеанса вызовите [[QBChat instance] loginWithUser:user]

4 - Из полученного делегата chatDidLogin вызвать что?

Должен ли он входить в какой-то чат или использовать какой-либо код с использованием chatRoomDidChangeOnlineUsers? Я не знаю.

Пожалуйста, помогите мне с минимальной необходимой последовательностью действий для вызова, короче, изменить 1-2-3-4 выше.

Обновленная информация о том, почему невозможно инициировать вызов:

Это связано с тем, что, поскольку чат непроизволен, вызовы могут конфликтовать. Если я буду использовать calluser API, все в конечном итоге будут звонить. То же верно и для ожидания приема вызова. Я не могу придумать честную стратегию, при которой система не была бы перегружена запросами на звонки или молчала из-за того, что все продолжают ждать.

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


person Nirav Bhatt    schedule 15.07.2014    source источник


Ответы (1)


Прежде всего, вы должны зарегистрировать нового пользователя и отправить ему тег. Для этого вам необходимо:

1) Создать сеанс

[QBAuth createSessionWithDelegate:self]

2) Зарегистрируйте нового пользователя и установите ему какой-нибудь тег:

 QBUUser *user = [QBUUser user];
 user.login = @"someuser";
 user.password = @"somepass";
 user.tags = @[@"Tag1"];

3) Создайте больше пользователей с тем же тегом

Далее, для того, чтобы позвонить какому-то пользователю, вы должны получить его случайным образом. Вот запрос, чтобы получить всех пользователей с определенным тегом:

[QBUsers usersWithTags:@[@"Tag1"] delegate:self];

вы получите всех пользователей с этим тегом. Далее - выбрать один из них случайным образом

Наконец, сделайте видеозвонок этому пользователю

Используйте пример Users, чтобы узнать, как работать с модулем Users http://quickblox.com/developers/SimpleSample-users-ios

кстати: QuickBlox выпустил SDK 2.0 с новым API блоков — вы можете попробовать его http://quickblox.com/developers/IOS#iOS_SDK_Transition_guide_from_version_1.9_to_2.0

person Rubycon    schedule 01.09.2014
comment
хорошо, спасибо за ответ, но это не решает реальный вопрос о коллизии вызовов, который я понял сам, написав собственный алгоритм. - person Nirav Bhatt; 01.09.2014