• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 为什么在蜂窝网络上下载后不切换回 wifi?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 12:00:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

尝试在 iOS 上实现下载功能时,我遇到了一个相当奇怪的行为。下载实现工作正常,它成功完成,可以在后台运行,并且文件存储在设备上。但是,在下载过程中,我可以关闭 wifi 以让任务切换到蜂窝网络并继续(或使用蜂窝网络开始下载)。这表现为方面。但是当我再次启用wifi时,下载似乎永远不会切换回使用wifi。设备已连接,wifi-connection-bars 显示在状态栏。使用 rechability 功能检查可用的连接甚至会返回 Wifi,但下载似乎停留在使用蜂窝网络。

我检测到这种情况的方式是查看系统设置中的使用情况统计信息。蜂窝数据使用量将与挂起的下载同步上升,并继续上升,直到下载完成(即使再次打开 wifi)。

我已经使用 Alamofire 和直接使用 NSURLSession 和 NSURLSessionDownloadTask 进行了测试,它们的行为相似。我还在两个完全独立的项目中看到了这种行为,在多个设备上,在 iOS 8.4 和 9.1 中,当应用程序位于前台或后台时,甚至 AppStore 在下载应用程序时也会这样!

有其他人经历过这种情况吗? 如果是这样,您是否找到任何方法可以优雅地将任务切换回 wifi?

提前致谢。



Best Answer-推荐答案


这是正常行为。添加新的网络接口(interface)(例如打开 Wi-Fi)不会停止现有的 TCP 连接。它们会一直持续到原来的网络接口(interface)消失为止。

如果您想暂停请求并在 Wi-Fi 可用时重新连接,您需要在任务上调用 cancelByProducingResumeData:,然后使用该恢复数据创建一个新请求,以从中断的位置重新启动请求。该新请求将通过当前事件的网络接口(interface),如果 Wi-Fi 已启动并正在运行,该接口(interface)通常是 Wi-Fi 接口(interface)。

不过,在您停止现有请求之前,我建议您尝试对 Google 的 generate 204 或 Apple 的强制门户检测 URL 之类的东西进行探测请求,以确保 Wi-Fi 确实正常工作。

关于ios - 为什么在蜂窝网络上下载后不切换回 wifi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958620/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap