Как настроить linphone на iphone

Обновлено: 04.06.2023

Ранее приложения VoIP/IM использовали VoIP-уведомления PushKit для запуска или возобновления работы в фоновом режиме, чтобы подключиться к своему серверу, получить информацию об ожидающем вызове или сообщении и отобразить ее пользователю либо с помощью Callkit, либо локальное уведомление.

Для приложений, скомпилированных с помощью iOS13 SDK (например, Xcode 11), это больше невозможно: приложения должны отображать вызов CallKit сразу после получения уведомления об уведомлении PushKit VoIP.

Apple обосновала это изменение требованием защиты от приложений, которые часто получают PushKit-уведомления со своих серверов для сбора информации о пользователях в фоновом режиме (местоположение, IP-адрес...) без их согласия.

Apple публично сообщила, что с апреля 2020 года все приложения, отправляемые в Apple Store, должны быть скомпилированы с SDK для iOS 13 или более поздней версии. До этой даты по-прежнему можно отправлять приложения и обновления приложений, скомпилированные с помощью Xcode 10, и такие приложения будут продолжать работать на iOS13, как если бы они работали на iOS12.

Последствия для приложений и серверов

Для переадресации вызовов:

  • Уведомления PushKit VoIP теперь должны использоваться только для уведомления о вызовах, а не о сообщениях.
  • Когда приложение получает VoIP-уведомление PushKit, оно должно немедленно вызвать CallKit для отображения вызова пользователю, даже если приложение еще не подключилось к серверу и, следовательно, не имеет всей информации о вызове. , например личность вызывающего абонента. Когда приложение, наконец, получает информацию о вызове (сообщение INVITE в SIP), которое должно поступить в ближайшее время, оно может обновить представление CallKit, чтобы добавить ранее отсутствовавшую информацию.
    Если пользователь решает ответить на вызов до получения ПРИГЛАШЕНИЯ, приложение может сообщить пользователю (через CallKit), что соединение вызова находится в процессе, и когда позднее наконец поступит ПРИГЛАШЕНИЕ, вызов начнется немедленно.
  • Если приложение не хочет использовать CallKit, например приложение для входа в дверь, использующее ранние медиаданные для отображения видео до того, как вызов будет принят, следует использовать классические push-уведомления. Расширение приложения-обработчика push-уведомлений [2] можно использовать для улучшения взаимодействия с пользователем, например для отображения видео.

Классические push-уведомления (не VoIP PushKit) должны использоваться для уведомления приложений обмена мгновенными сообщениями о входящих сообщениях. Во многих случаях может быть нежелательно переносить текст IM внутри push-уведомления (например, когда текст зашифрован). Чтобы покрыть этот случай, также требуется расширение приложения обработчика push-уведомлений [2]. Расширение приложения может подключаться к серверу, выполнять расшифровку содержимого сообщения и отображать его как локальное уведомление для пользователя.

Наш план

В настоящее время инженеры Belledonne Communications работают над внесением изменений в приложение Linphone для iOS и сервер Flexisip, чтобы адаптироваться к этим новым ограничениям iOS13. Эти работы состоят из трех аспектов:

  • изменения в интеграции CallKit приложения Linphone
  • разработка расширения приложения Linphone для обработки мгновенных уведомлений
  • изменения во Flexisip для соответствия требованиям приложений iOS13

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

Тем временем мы рекомендуем продолжать использовать XCode 10 для отправки приложений и их обновлений в Apple Store.

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

– Аудио- и видеозвонки в формате HD.
– Интеграция с системами push-уведомлений iOS/Android.
– Аудиоконференции и расширенные функции вызовов.
– Обмен мгновенными сообщениями (IM), групповой чат и обмен файлами. < br />- Создание учетной записи и удаленная настройка (с помощью QR-кода или URL-адреса)
- Безопасная связь с сквозным шифрованием
- Полностью на основе SIP, для всех функций вызова, присутствия и обмена мгновенными сообщениями


Скачать для






Полное, безопасное и совместимое программное решение SIP для разработчиков систем связи

Откройте для себя наши
решения для VoIP
и обмена мгновенными сообщениями
за 3 минуты!


Профиль Accueil


Товары

Что стоит за Linphone и какое программное обеспечение вам действительно нужно? Откройте для себя все семейство программного обеспечения, которое мы разрабатываем и распространяем.


Решения

Интересно, как вы можете использовать Linphone, Liblinphone SDK или сервер Flexisip в своем собственном конкретном проекте VoIP? Ознакомьтесь с распространенными вариантами использования и ознакомьтесь с нашими техническими документами.


Лицензирование и услуги

Не определились между открытым исходным кодом или проприетарной лицензией или вам нужна помощь в вашем проекте? Узнайте о нашей модели лицензирования и доступном спектре профессиональных услуг.


Компания

Кто мы и чем занимаемся? Узнайте историю компании, стоящей за проектом Linphone, ознакомьтесь с навыками нашей команды и прочтите некоторые из наших рекомендаций.


Вики для разработчиков

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


Информационные документы

Узнайте, как использовать Linphone и Flexisip для создания системы внутренней связи, безопасного решения VoIP или приложения для социальных сетей.


Технический уголок

Доступ к подробной технической информации о наших программных приложениях, включая архитектуру нашего программного обеспечения, поддерживаемые RFC, документацию по API, информацию о том, как получить исходный код и многое другое.


Возможности

Linphone – это SIP-телефон с открытым исходным кодом, который позволяет свободно общаться с людьми через Интернет. Узнайте, на что он способен.


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


Бесплатный SIP-сервис

Создайте и управляйте своей учетной записью Linphone (что означает ваш собственный SIP-адрес), чтобы начать использовать Linphone и общаться с друзьями.

Выберите Liblinphone — самый простой способ внедрить расширенные функции VoIP и обмена мгновенными сообщениями в программные приложения или аппаратные продукты


Кроссплатформенный

Единый SDK с абстрагированием от специфики платформы для разработки VoIP-клиента для смартфонов, планшетов, настольных платформ и встроенных систем

Многоязычный

Легко получить

Простая интеграция с IDE для мобильных платформ благодаря нашему репозиторию Maven и Cocoapods. Доступны пакеты SDK и общедоступный исходный код.

Простой в использовании

Спасибо нашим руководствам, общедоступной вики-странице и службе поддержки разработчиков.

Создайте приложение для безопасной связи с помощью Linphone


Безопасная аутентификация пользователя

и настройка вызова с дайджест-аутентификацией SHA-256 или клиентскими сертификатами TLS

Безопасные голосовые и видеозвонки

Безопасный чат и групповой чат (только для мобильных устройств)

с шифрованием обмена мгновенными сообщениями Linphone (LIME), использующим современную кривую шифрования X448 и двойной храповой алгоритм для идеальной секретности пересылки

    Соединение WWAN
    Liblinphone использует стандартный уровень сокетов BSD iOS для сетей sip/rtp. Предполагается, что в IOS подключение к WWAN автоматически возникает при любом сетевом запросе, выдаваемом приложением. По крайней мере, в iPhone OS 3.x сокеты BSD не реализуют такое поведение. Поэтому рекомендуется добавить специальный код, чтобы убедиться, что соединение WWAN настроено правильно. Приведенный ниже псевдокод описывает способ принудительного подключения к WWAN путем создания фиктивного TCP-подключения.

void networkReachabilityCallBack (цель SCNetworkReachabilityRef, флаги SCNetworkReachabilityFlags, void * info)

if ((flags == 0) | (flags & (kSCNetworkReachabilityFlagsConnectionRequired |kSCNetworkReachabilityFlagsConnectionOnTraffic)))

Звуковые карты
Начиная с IOS 5.0, liblinphone поддерживает 2 звуковые карты. AU: Audio Unit Receiver на основе устройств ввода/вывода для голосовых вызовов плюс AQ: Audio Queue Device, предназначенный для звонков. Здесь при рекомендуемых настройках (по умолчанию в IE)

Взаимодействие с вызовами GSM
Чтобы обеспечить плавное взаимодействие с вызовами GSM, рекомендуется зарегистрировать делегата AudioSession. Это позволяет приложению получать уведомления, когда его аудиосеанс прерывается/возобновляется (предположительно посредством вызова GSM).


Объявите экземпляр вашего класса в качестве делегата AudioSession:

Видео
Начиная с версии 3.5 в liblinphone для IOS была добавлена ​​поддержка видео. Это требует, чтобы приложение предоставило liblinphone указатели на представления IOS, отображающие видео, и предыдущее видео.
Эти два объекта UIView должны быть переданы ядру с помощью функций linphone_core_set_native_video_window_id() и linphone_core_set_native_preview_window_id(). здесь под спудокодом:


Повороты экрана также обрабатываются liblinphone. В настоящее время поддерживаются две позиции, а именно UIInterfaceOrientationPortrait и UIInterfaceOrientationLandscapeRight. Приложения могут вызывать linphone_core_set_device_rotation(), а затем linphone_core_update_call(), чтобы уведомить liblinphone об изменении ориентации. Здесь под кодом speudo для обработки изменений ориентации

Отзывы DTMF
Liblinphone предоставляет функции для воспроизведения DTMF для локального пользователя. Обычно это используется для воспроизведения звука, когда пользователь нажимает цифру внутри или вне любого вызова. В IOS libLinphone полагается на AudioUnits для взаимодействия с аудиосистемой. К сожалению, инициализация аудиоустройства — довольно длительная операция, которая может вызвать неприятные ощущения у пользователя, если выполнять ее каждый раз при воспроизведении DTMF, а звук задерживается на полсекунды после нажатия. Чтобы решить эту проблему и, таким образом, обеспечить точность в реальном времени, liblinphone вводит 2 функции для предварительной загрузки и выгрузки основного аудиографа, отвечающего за воспроизведение DTMF.
Для приложения, использующего функцию linphone_core_play_dtmf(), рекомендуется вызывать linphone_core_start_dtmf_stream() при входе в передний план и linphone_core_stop_dtmf_stream() при входе в фоновый режим.

Плагины
В iOS плагины создаются как статические библиотеки, поэтому Liblinphone не сможет динамически загружать их во время выполнения. Вместо этого вы должны объявить их прототипы:

Linphone — это SIP-телефон с открытым исходным кодом для голосовых и видеозвонков и обмена мгновенными сообщениями, доступный для мобильных и настольных сред (iOS, Android, GNU/Linux, macOS, Windows).

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

  • Интерфейс Qt/QML для рабочего стола Windows, macOS и GNU/Linux
  • Консольный интерфейс (linphone-daemon)
  • Приложение для iPhone, созданное на языке Objective C.
  • Приложение для Android, работающее на Java.

Liblinphone — это основной движок, это библиотека, которая реализует все функции Linphone.
Liblinphone — это мощный SDK на основе SIP для передачи голоса и видео по IP, который любой может использовать для добавления аудио- и видеовызовов. или возможности обмена мгновенными сообщениями с приложением. Он предоставляет высокоуровневый API для инициирования, приема и завершения аудио- и видеовызовов.

Liblinphone использует следующие программные компоненты:

    , мощный мультимедийный SDK для потоковой передачи и обработки аудио/видео , простая библиотека RTP , библиотека SIP

Liblinphone и все его зависимости написаны на C++ и C.

Архитектура


Инструменты консоли

Linphone-daemon — это консольная программа, основанная на Liblinphone, которая может регистрировать, отправлять и принимать вызовы, считывая простые текстовые команды из стандартного ввода или из сокета UNIX. В ответ на каждую команду linphone-daemon записывает статус выполнения команды в стандартный вывод (или в сокет).
Этот инструмент можно легко использовать из сценария оболочки для выполнения простых сценариев SIP теми, кому не требуются все возможности Liblinphone SDK.

Linphone-daemon заменяет прежний консольный инструмент "linphonec", поскольку использует более эффективный синтаксис для ввода и вывода.

Читайте также: