繁体   English   中英

将应用程序发送到后台模式后,如何继续接收数据?

[英]How to keep receiving the data when app is sent to background mode?

在iOS12中,苹果开始取消网络请求(如果不是URLSessionDownloadTask并使用后台会话进行设置。

但是根据苹果网站:

您不必使用后台会话进行所有后台网络活动...声明适当后台模式的应用程序可以使用默认的URL会话和数据任务,就像它们位于前台一样

我正在使用自定义播放器流媒体文件,应用程序启用了AudioBackground Fetch模式。 一旦应用进入后台状态任务, URLSessionDataTask就会在前台初始化。

我知道AVPlayer可以在后台流式传输,但不能使用AVPlayer。

我知道我可以使用URLSessionDownloadTask设置会话,该会话将在单独的进程中下载数据并返回到文件的路径,由于流媒体需求,这不是一个选择。

我知道我可以使用UIApplication.shared.beginBackgroundTask请求额外的后台执行时间,但这是不可接受的解决方案,因为如果backgroundTimeRemaining在流完成的应用程序终止之前到期。

当应用程序处于后台模式时,有什么方法可以继续接收数据吗?

确保您的后台会话已启用shouldUseExtendedBackgroundIdleMode 如果不这样做,则当应用程序从前台执行过渡到后台执行时,会话将停止数据任务。 或者,正如“后台文件”中的“下载文件”所述 ,您也可以使用default会话配置,而不会表现出这种行为。


FWIW,在使用AVPlayer ,除了启用背景音频功能外...

在此处输入图片说明

...您可能还必须告诉共享音频会话实例它是活动的:

try AVAudioSession.sharedInstance().setCategory(.playback)
try AVAudioSession.sharedInstance().setActive(true)

我无法说出您的“自定义播放器”需要什么,但是对我来说,我必须同时执行这两项操作,以使应用程序在后台运行,并使用AVPlayer播放音频。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM