UWP背景VoIP呼叫

时间:2018-06-12 09:20:20

标签: uwp voip lifecycle background-task

我们正在为UWP Desktop开发RTP VoIP应用程序。我们正在使用第三方库进行音频/视频通信。 只要应用程序处于前台或未最小化,音频连接就可以正常工作,但只要将应用程序发送到后台,最小化音频连接就会暂停。再次在前台时,恢复连接。

有两种不同的情况发生:

  1. 失败:uwp桌面应用用户启动呼叫,然后最小化应用。音频被切断了。
  2. 成功:uwp桌面应用程序接收呼叫(首先由PushNotificationChannel通知事件触发)。在这种情况下,在通话期间,当应用程序最小化时,音频连接保持活动状态......这有点不明原因......
  3. 这里的目的是在应用程序窗口最小化的同时获取后台调用音频(对于案例1)。

    说明: 基于两个调用案例之间的差异(案例1没有推送通知),我们假设推送通知可能正在获取我们不知道的某种类型的延迟。有趣的是,这部分有效。如果在案例2之后在同一应用程序会话期间尝试,案例1也将起作用。

    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 :(得分:0)

我们通过使用VoipPohneCall UWP功能找到了解决方案。

当呼叫建立时,我们请求新的呼出:

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

通话结束时:

_voipCall.NotifyCallEnded();

涵盖我们所需的用例。