UWP 后台 VoIP 通话
UWP Background VoIP Call
我们正在为 UWP 桌面开发 RTP VoIP 应用程序。我们正在使用第三方库进行 audio/video 通信。
只要应用程序处于前台或未最小化,音频连接就可以正常工作,但一旦通过最小化音频连接将应用程序发送到后台,音频连接就会暂停。当再次处于前台时,连接将恢复。
有两种不同的情况发生:
- 失败:uwp桌面应用用户发起调用,然后最小化应用。音频被切断。
- 成功:uwp 桌面应用程序收到调用(首先由 PushNotificationChannel 通知事件触发)。在这种情况下,在通话过程中,当应用程序最小化时,音频连接保持活动状态......这有点莫名其妙......
这里的 目的 是让后台通话音频(针对案例 1.)在应用程序 window 最小化时也能正常工作。
备注:
基于两个调用案例之间的差异(案例 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" />
欢迎所有想法:)
我们找到了使用 VoipPohneCall UWP 功能的解决方案。
建立呼叫后,我们请求新的拨出呼叫:
_voipCall = VoipCallCoordinator.GetDefault().RequestNewOutgoingCall(...);
_voipCall.NotifyCallActive();
通话结束时:
_voipCall.NotifyCallEnded();
涵盖我们所需的两个用例。
我们正在为 UWP 桌面开发 RTP VoIP 应用程序。我们正在使用第三方库进行 audio/video 通信。 只要应用程序处于前台或未最小化,音频连接就可以正常工作,但一旦通过最小化音频连接将应用程序发送到后台,音频连接就会暂停。当再次处于前台时,连接将恢复。
有两种不同的情况发生:
- 失败:uwp桌面应用用户发起调用,然后最小化应用。音频被切断。
- 成功:uwp 桌面应用程序收到调用(首先由 PushNotificationChannel 通知事件触发)。在这种情况下,在通话过程中,当应用程序最小化时,音频连接保持活动状态......这有点莫名其妙......
这里的 目的 是让后台通话音频(针对案例 1.)在应用程序 window 最小化时也能正常工作。
备注: 基于两个调用案例之间的差异(案例 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" />
欢迎所有想法:)
我们找到了使用 VoipPohneCall UWP 功能的解决方案。
建立呼叫后,我们请求新的拨出呼叫:
_voipCall = VoipCallCoordinator.GetDefault().RequestNewOutgoingCall(...);
_voipCall.NotifyCallActive();
通话结束时:
_voipCall.NotifyCallEnded();
涵盖我们所需的两个用例。