两天时间终于把版本更新搞出来了,太高兴了。已经支持Android的热跟新了。
思路就是:在本地使用自己编写的自动生成版本工具生成version,新的版本放到服务器上。本地的版本xml和服务器的对比,将md5改变的找出来下载,里面要注意需要对大版本重新安装,还有检查网络,写入本地(沙盒),细节不少。
/// <summary>
/// 加载本地xml回调
/// </summary>
/// <param name="obj"></param>
public void LoadLocalXmlCallBack(System.Object obj,bool isPath)
{
Debug.Log("LoadLocalXmlCallBack");
string text = "";
if (isPath == true)
text = obj as string;
else
{
WWW temp = obj as WWW;
text = temp.text;
}
if (text.Length <= 0)
{
Debug.Log("加载本地Xml失败!!,请检查!!");
}
else
{
Debug.Log("加载本地版本配置成功,正在解析本地Xml!!");
ReadXMLVersion(text, LocalXmlInfo, isPath, false);
Debug.Log("解析完成本地版本xml,检查合法性!!");
if (LocalXmlInfo.m_DownRootPath == "" || LocalXmlInfo.m_Platform == "")
{
//如果是路径重新下载
if (isPath)
{
File.Delete(ResConfig.PersistentAsset(m_VersionXmlName)); //删除沙盒里面文件
LoadHelp.LoadLocalXmlCallBack call = new LoadHelp.LoadLocalXmlCallBack(LoadLocalXmlCallBack);
StartCoroutine(m_loadHelp.LoadLocalAsset(m_VersionXmlName, call));
}
else
{
Debug.Log("load version xml error ...");
Debug.Log("load version xml error !");
Application.Quit();
}
return;
}
//下载服务器上的xml
Debug.Log("下载服务器上面的版本信息xml!!");
string urlPath = LocalXmlInfo.m_DownRootPath + "//" + PlatformUtil.GetPlatformName() + "//" + m_VersionXmlName;
LoadHelp.LoadServerAssetCallBack serverCall = new LoadHelp.LoadServerAssetCallBack(LoadServerXmlCallBack);
StartCoroutine(m_loadHelp.LoadServerAsset(urlPath, m_VersionXmlName, serverCall,true));
}
}