之前有一篇文章谈了www下载技术,发现在实际项目的应用过程中,尤其是在大文件的下载过程若是没有断点续传的话,下载起来的体验就会很差,所以更改技术采用HttpWebRequest下载技术,刚刚开始的时候发现HttpWebRequest的命名空间是using System.Net,当看到这个时,心里的第一感觉这个下载技术可能在ios上无法进行支持,而且网上的很多文章基本都是在pc环境下进行了验证,就算有些也只是验证了安卓,这样在做移动双平台开发的时候,就怕……
在这里要感谢unity3d群里的马里奥海贝,这个HttpWebRequest的一手demo是他给我的,之后验证了在iOS平台的下载情况,发现是完全可以使用的,最终发现HttpWebRequest是完全可以支持移动双平台的,而对于System.Net架构的东西可以支持iOS这个问题,暂时还没有搞懂,还在努力提高自己的过程中。
对了下面代码,在原来demo的基础上,修正了下进度的获取,更改了实现了现在过程中先生成临时文件,当想在完成后再生成真正文件,当然下载超时这些基本应用在demo中没有实现,但是在实际的项目中还是需要应用的,下面demo的下载地址为无效地址,只是显示个基本样子而已,在进行实验的时候修改为真实地址即可。
代码一:
using System.IO;
using System.Net;
using System.Threading;
using UnityEngine;
public class MyHttp
{
/// <summary>
/// 下载进度(百分比)
/// </summary>
public float progress { get; private set; }
private bool isStop;
private Thread thread;
/// <summary>
/// 下载文件(断点续传)
/// </summary>
/// <param name="_url">下载地址</param>
/// <param name="_filePath">本地文件存储目录</param>
public void Download(string _url, string _fileDirectory,string _fileName)
{
string Temporarysuffix = ".bmp";
string Filesuffix = ".assetbundle";
isStop = false;
string mUrl = _url+_fileName+Filesuffix;
thread = new Thread(delegate ()