ios 如何真正使用URLSesssion优先级和networkServiceType

jmo0nnb3  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(135)

URLRequest具有networkServiceType字段,描述如下。
网络服务类型向操作系统提供有关底层流量用途的提示。此提示增强了系统对流量进行优先级排序、确定唤醒Hive或Wi-Fi无线电的速度等的能力。它提高了系统以最佳方式平衡电池寿命、性能和其他注意事项的能力。
例如,如果您的应用正在执行的下载不是用户类预取内容请求的,则指定NSURLRequest.NetworkServiceType.background服务类型,以便在用户选择查看内容时可用。相比之下,持续连接的语音和视频应用应根据需要使用NSURLRequest.NetworkServiceType.voice、NSURLRequest.NetworkServiceType. background或视频服务类型。
则URLSessionTask具有priority字段,其描述如下
若要向主机提供有关如何从应用确定URL会话任务优先级的提示,请为每个任务指定优先级。URL优先级仅提供提示,并不保证性能。如果未指定优先级,则URL会话任务的优先级为defaultPriority,值为0.5。
您可以使用三种命名的优先级,如URL会话任务优先级中所述。
您可以随时指定或更改任务的优先级,但并非所有网络协议都会在任务启动后响应更改。没有API可让您从主机的Angular 确定任务的有效优先级。
我最初的假设是,当从请求创建任务时,系统将networkServiceType值Map到优先级,但情况似乎并非如此。我尝试了networkServiceType的每个值,URLSessionTask.priority始终是default
这些字段实际上有什么影响?它们如何协同工作?我应该使用什么来区分流量的优先级?

ioekq8ef

ioekq8ef1#

它们是两个不同的东西。第一个是配置设置,它将影响QoS和低级别网络设置。
第二种是简单地把一个请求优先于另一个,它们是免费的。

相关问题