Pull to refresh

Comments 5

В production это даёт задержку 8-12 секунд от момента "позвонить" до первого аудио. Причина: современные мобильные устройства собирают ICE-кандидаты медленно — особенно в мобильных сетях, особенно если STUN/TURN серверы далеко. ICE gathering может занимать 3-5 секунд на стороне caller, потом ещё 3-5 секунд на стороне receiver. 

Звучит как вечность. Есть какие-то примеры реальных измерений с дампами?

Справедливый вопрос. Полноценных дампов webrtc-internals с production я в статью не вставлял — это отдельный материал. Но из своих логов: timestamps от createOffer до первого ontrack у меня в среднем 700-1400мс на разных сетях. Цифры “8-12 секунд” в gather-then-send — это результат моих собственных тестов на старой реализации до перехода на trickle, на плохих мобильных сетях LTE с международным TURN. На хорошем Wi-Fi разница меньше — gather может занимать секунды 2-3. Если интересно — могу в отдельном посте/статье разобрать дампы webrtc-internals с трассировкой, это полезная тема.

Вопрос от совершенно некомпетентного: ConnectionService API в Андроиде позволяет отображать список вызовов в System Dialer наравне с телефонными? Если да - почему никто это не использует? Общая лента звонков на iOS НАМНОГО удобнее и нагляднее, чем в Андроиде.

ConnectionService API действительно существует и именно для этого: интеграция с system dialer на Android. Никто не использует — потому что это адски сложно правильно реализовать. У ConnectionService очень много edge cases: разные OEM реализуют его по-разному (Samsung, Xiaomi, Huawei имеют свои quirks), нужно правильно обрабатывать lifecycle сервиса, нужны permissions которые пользователи часто отказываются давать (“Make and manage phone calls”). А ещё на Android нет аналога iOS VoIP push — на FCM data message нельзя гарантированно поднять foreground service за миллисекунды до показа звонка. Поэтому многие (включая меня в текущей версии ONEMIX) делают компромисс — обычные high-priority push с custom UI вместо нативной интеграции. Но согласен, что iOS-овская унифицированная лента звонков — это сильно лучше UX. У меня в roadmap есть пункт “разобраться с ConnectionService”, но руки пока не дошли. Если ты сам ковырял эту тему — интересно услышать что-то конкретное.

К сожалению нет, помочь нечем, могу только пожелать удачи!

Sign up to leave a comment.

Articles