UWP 后台 VoIP 通话

问题描述 投票:0回答:2

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

发生两种不同的情况:

  1. 失败:uwp 桌面应用程序用户发起呼叫,然后最小化应用程序。音频被切断。
  2. 成功:uwp桌面应用程序收到呼叫(首先由PushNotificationChannel通知事件触发)。在这种情况下,在通话过程中,当应用程序最小化时,音频连接保持活动状态......这有点无法解释......

此处的目的是让后台通话音频(对于情况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" />

欢迎所有和任何想法:)

uwp voip lifecycle background-task
2个回答
1
投票

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

建立呼叫后,我们请求新的拨出呼叫:

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

通话结束时:

_voipCall.NotifyCallEnded();

涵盖我们所需的用例。


0
投票

@xabre 您能详细解释一下如何修复此错误吗?因为我在 pjsip 调用或提供示例 github 时面临同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.