2014-10-24 2 views
0

У меня есть приложение для voip, и клиент все равно будет доступен после закрытия приложения. Могу ли я что-то сделать, чтобы мое приложение работало как facetime?Возможно ли сохранить розетку даже после закрытия приложения?

Приложение должно зарегистрироваться на нашем сигнальном сервере. Сервер передает сообщения, такие как «начать вызов» для клиентов.
Итак, если A хочет вызвать B, A должен открыть сокет и отправить сигнал входа (тот же для B), а затем отправить на сервер сигнал «call_create» с параметром «пользователь», установленным на «B». Затем сервер просматривает сообщение, видит, что он предназначен для B и отправляет его в B (если B также входит в систему). B теперь получает сообщение о том, что A хочет начать вызов и может отправить «принять» обратно на сервер. Сервер отправляет это сообщение обратно в A, и вызов запускается.

Теперь, когда приложение закрыто (дважды нажмите кнопку «домой», проведите по экрану вверх), очевидно, что сокет также убит. Но один из наших клиентов хочет получать звонки после убийства приложения (длинная история, но другого выхода нет).
Я знаю, что facetime не нужно запускать, чтобы иметь возможность принимать вызовы, но я не уверен, что это возможно с помощью обычного приложения (facetime является частью ОС). В идеале я бы частично переместил регистрацию в меню настроек, точно так же, как facetime, а затем все время подключался к серверу сигнализации, независимо от того, работает приложение или нет.

+0

Это похоже на проблему с дизайном. Вы можете рассмотреть возможность разделения вашего приложения на два. Одна часть работает в фоновом режиме, поддерживая соединение с сигнальным сервером и раскалывая другую часть, при необходимости, интерфейс. Поскольку вы не можете ожидать, что ваш телефон будет получать вызовы, если он отключен ... ;-) – alk

ответ

1

похоже, что вам нужно использовать push notification feature. Если ваш продукт поддерживает android, см. Google Cloud Messages.

+0

Я знаю, что вы можете получать уведомления о push-адресе, моя проблема заключается в том, что пользователь должен быть зарегистрирован на сервере сигнализации. Если это единственный способ, потребуется много работы, чтобы переключиться на систему, использующую push-уведомления. – Kevin

+0

, чтобы активировать push-уведомление, вам не нужно входить в систему. Достаточно, если вы входите в систему один раз (вам нужно пройти к идентификатору сервера устройства и сопоставить этот идентификатор с именем пользователя). –

+0

Да, но мой сервер сигнализации требует входа в систему – Kevin

Смежные вопросы