Софтфон для Android: будить или не засыпать?
Будить иль не будить — вот в чем вопрос. Достойно ль
Аккумуляторы нам заставлять страдать
Или невместно? И, напротив, нужно
Нам к батареям проявить гуманность:
Позволить им не умереть — уснуть?
Этот пост — продолжение истории создания Whitelabel-софтфон для Android и рассказ о том, как мы решали проблему засыпания.
Как известно, многие мобильные приложения имеют проблемы со сном. Точнее, как раз со сном-то проблем у них нет: они очень хорошо засыпают, стоит лишь их только свернуть. А вот выйти из спящего режима они не могут, и это напрягает, раздражает и бесит. Кроме того, это чревато потерей клиентов: если софтфон в момент звонка не сможет проснуться, то будет не разговор и лид, а пропущенный звонок и пшик.
И если мы не хотим пропускать входящие звонки так же, как это делают другие сип-клиенты, то у нас есть роскошный выбор из двух вариантов: 1) не спать вообще; 2) будить, когда нужно.
Неспящие в Андроиде
Действительно, зачем спать, если можно не спать? Тусить всегда, тусить везде — вот лозунг мой, и точка! Да и реализовать вроде бы просто — Мистер Бин это убедительно доказал и показал.
Решение от Мистера Бина
Нам всего лишь надо сказать клиентам, чтобы покопались в настройках батареи и разрешили фоновую деятельность — и дело в шляпе! Да? Нет. У всякой проблемы всегда есть решение: простое, удобное и, конечно, ошибочное — тот самый случай.
Во-первых, это неудобно для клиентов, а значит, неправильно. К тому же вряд ли клиенты будут в восторге от того, как активно наше приложение будет жрать батарею, на которую и без того хватает охотников.
Скоропостижная смерть батареи — это вовсе не то, к чему мы стремимся
Поэтому устраивать пир во время чумы мы не будем и пойдём другим путём.
Андрота, подъём!
Появилась другая идея: сделать сип-прокси между софтфоном и АТС, который будет решать сразу две задачи:
- Удерживать регистрацию на АТС, когда приложение в телефоне дремлет (уснуло? ну и ладно).
- Будить телефон при входящем звонке посредством пуш-уведомления.
Принципиальная схема пробуждения и удержания регистрации на АТС
Соответственно, в случае iOS (напомним, что у нас есть также Whitelabel-софтфон для iOS) вместо Google Push используется Apple Push, а в остальном схема такая же: от АТС к Push-прокси через SIP/RTP, затем к Push-серверу посредством HTTP. Взаимодействие прокси и софтфона — также через SIP/RTP.
Так мы победили проблему засыпания. А про то, как мы решали, что будет лучше для бэкенда и выбирали между нативным и кросплатформенным — читайте в этой статье.
Всем мобильности! 📱
ТАКЖЕ ПО ТЕМЕ
Blog
Платный софтфон VS бесплатные звонилки
Blog
Реальный софтфон: что нужно людям
Blog
VoIP vs SIP, звонилки VS софтфоны: сходства и различия
Help
Решение проблем с качеством связи IP телефонии при использовании Softphone.Pro