UWP Фоновый звонок VoIP - PullRequest
       25

UWP Фоновый звонок VoIP

0 голосов
/ 12 июня 2018

Мы разрабатываем приложение RTP VoIP для UWP Desktop.Мы используем стороннюю библиотеку для аудио / видео связи.Аудиоподключение работает нормально, если приложение находится на переднем плане или не свернуто, но как только приложение отправлено на задний план путем минимизации аудиосоединения, оно приостанавливается.Когда снова на переднем плане связь возобновляется.

Возможны два различных случая:

  1. Fail : пользователь настольного приложения uwp инициирует вызов, а затем сворачивает приложение.Аудио отключено.
  2. Успех : настольное приложение uwp получает вызов (который сначала инициируется событием уведомления PushNotificationChannel).В этом случае, во время вызова, когда приложение свернуто, аудиоподключение остается активным ... что немного необъяснимо ...

Цель здесьзаставить фоновый звук вызова (для случая 1.) также работать, пока окно приложения свернуто.

Примечания. Исходя из различий между двумя случаями вызовов (нет push-уведомления для случая 1), мы предполагаем, что push-уведомление может получать некоторый тип отсрочки, о котором мы не знаем.Интересно то, что это частично работает.Вариант 1. также будет работать, если его попытаться выполнить после варианта 2. во время той же сессии приложения.

PS: мы уже приобрели ответчик для следующих событий жизненного цикла приложения:

        this.Suspending += this.OnSuspending;
        this.EnteredBackground += this.AppEnteredBackground;
        this.LeavingBackground += this.AppLeavingBackground;

        private void AppEnteredBackground(object sender, EnteredBackgroundEventArgs e)
        {
            var deferral = e.GetDeferral();
        }  

А также имеем возможность фонового носителя в манифесте:

<uap3:Capability Name="backgroundMediaPlayback" />

Всеи любые идеи приветствуются :)

1 Ответ

0 голосов
/ 18 июня 2018

Мы нашли решение с помощью функции VoIPPohneCall UWP.

Когда звонок установлен, мы запрашиваем новый исходящий звонок:

_voipCall = VoipCallCoordinator.GetDefault().RequestNewOutgoingCall(...);
_voipCall.NotifyCallActive();

А когда звонок заканчивается:

_voipCall.NotifyCallEnded();

Охватывает оба наших необходимых варианта использования.

...