AssetsManager 在ios更新失败解决方案
AssetsManager在安卓平台使用正常,但是到ios就不行了,最后发现是 cocos2d\cocos\network\CCDownloader-apple.mm中的
- (void)URLSession:(NSURLSession *)session task :(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error 函数有问题,代码如下:
- (void)URLSession:(NSURLSession *)session task :(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
{
DLLOG("DownloaderAppleImpl task: \"%s\" didCompleteWithError: %d errDesc: %s"
, [task.originalRequest.URL.absoluteString cStringUsingEncoding:NSUTF8StringEncoding]
, (error ? (int)error.code: 0)
, [error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding]); // clean wrapper C++ object
DownloadTaskWrapper *wrapper = [self.taskDict objectForKey:task]; // if no error, callback has been called in finish task
if (_outer && error)
{
std::vector<unsigned char> buf; // just a placeholder
_outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_IMPL_INTERNAL,
(int)error.code,
[error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding],
buf);
}
[self.taskDict removeObjectForKey:task];
[wrapper release];
}
如果error为空的话就不会调用_outer->onTaskFinish,好坑爹啊,最后参考新版代码修改如下:
- (void)URLSession:(NSURLSession *)session task :(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
{
DLLOG("DownloaderAppleImpl task: \"%s\" didCompleteWithError: %d errDesc: %s"
, [task.originalRequest.URL.absoluteString cStringUsingEncoding:NSUTF8StringEncoding]
, (error ? (int)error.code: )
, [error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding]); // clean wrapper C++ object
DownloadTaskWrapper *wrapper = [self.taskDict objectForKey:task]; // if no error, callback has been called in finish task
if (_outer)
{
if(error)
{
std::vector<unsigned char> buf; // just a placeholder
_outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_IMPL_INTERNAL,
(int)error.code,
[error.localizedDescription cStringUsingEncoding:NSUTF8StringEncoding],
buf);
}
else if (![wrapper get]->storagePath.length())
{
// call onTaskFinish for a data task
// (for a file download task, callback is called in didFinishDownloadingToURL)
std::string errorString; const int64_t buflen = [wrapper totalBytesReceived];
char buf[buflen];
[wrapper transferDataToBuffer:buf lengthOfBuffer:buflen];
std::vector<unsigned char> data(buf, buf + buflen); _outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_NO_ERROR,
,
errorString,
data);
}
else
{
NSInteger statusCode = ((NSHTTPURLResponse*)task.response).statusCode; // Check for error status code
if (statusCode >= )
{
std::vector<unsigned char> buf; // just a placeholder
const char *originalURL = [task.originalRequest.URL.absoluteString cStringUsingEncoding:NSUTF8StringEncoding];
char cmsg[];
sprintf(cmsg,"Downloader: Failed to download %s with status code (%d)", originalURL, (int)statusCode);
std::string errorMessage = cmsg; _outer->onTaskFinish(*[wrapper get],
cocos2d::network::DownloadTask::ERROR_IMPL_INTERNAL,
,
errorMessage,
buf);
}
}
}
[self.taskDict removeObjectForKey:task];
[wrapper release];
}
AssetsManager 在ios更新失败解决方案的更多相关文章
- SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案
SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败的问题,可作如下尝试: 更新失败后,在windows的[事件查看器→应用程序]中找到来源为MsiInstaller,事件ID为1 ...
- Eclipse集成环境中Android SDK下载及更新失败解决方案
由于公司新项目比较忙,有好长一段时间没碰Android开发咯! 近期闲来在网上下了个开源的应用想拿来自己学习下其中的源码及整体设计,当我把下下来的项目导入Eclipse中时,报如下警告: 原因是我本地 ...
- 现有新的iOS更新可用,请从iOS12 beta版进行更新.解决方案
问题描述: ios系统一直弹出“现有新的iOS更新可用,请从iOS12 beta版进行更新”的提示,很烦的. 应该只出现在安装测试版ios12的手机上. 解决方案: 删除描述文件无法解决. 有网友机制 ...
- Dell R410 broadcom网卡驱动更新失败
问题描述: 最近遇到一个Dell R410 broadcom网卡驱动更新失败的问题.从官网上下载的驱动在安装的过程中都会自己回滚回来,很是困惑. 尝试解决: Dell官网现在提供的驱动一般最少有两种格 ...
- [置顶]
ubuntu版本很老,apt-get update更新失败时(W: Failed to fetch ...)------如何创建新的sources.list
在说这个解决方案之前,我先说下,目前遇到的问题: 我使用 sudo apt-get update 之后,更新失败.具体原因如下: W: Failed to fetch http://cn.archiv ...
- [置顶]
apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)
我使用sudo apt-get update之后,更新失败,遇到如下错误. W: Failed to fetch http://ppa.launchpad.net/jonathonf/python-3 ...
- 接收新信息,在会话中看不到(thread表数据插入/更新失败)
分析原因:收到短信,sms表插入信息,触发器会自动更新thread表,更新失败导致一直有一条未读信息数量显示,但在会话列表中却看不到. (偶现,低概率. 解决方法:接收新信息插入后,立即查询threa ...
- Android SDK Manager 更新失败的解决方法
Android SDK Manager 更新失败的解决方法 原文地址 最近使用Android SDK Manager 更新Android SDK tools 发现经常更新失败,获取不到更新信息: Fe ...
- Win7 & Win 8系统更新失败的解决
转自:Win 8系统更新失败的解决(原创) 这几天win 8又出了一大堆更新,而且是一更新完就要重启,重启之后照例要进入更新包的安装过程.不爽的是,屡屡在重启后出现"配置Windows更新失 ...
随机推荐
- 工作总结 @Html 辅助方法 为 生成的 标签设置元素属性 htmlAttributes 一个对象,其中包含要为该元素设置的 HTML 特性。
@Html.RadioButtonFor(m => m.IsJianChe, true, new { @style = "width: 18px; height: 18px;" ...
- UniCode 下 CString 转 char* 的方法
今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失.原来CString类对象GetBuffer(),后 ...
- Ubuntu中建立ftp 503错误解决办法
The problem is because your folder is owned by root, instead of ftpuser. To fix it run: sudo chown - ...
- jquery判断元素的子元素是否存在
jquery判断元素的子元素是否存在的示例代码. jquery判断子元素是否存在 一.判断子元素是否存在 //一级子元素 if($("#specialId>img").len ...
- CYQ多数据库链接
枚举名XXXEnum 对应XXXConn的配置数据库链接项 ,不多说,一看就明白!名字空间得要带上数据库名!
- 开源项目AndroidUtil-採用Fragment实现TabHost
原文出自:方杰|http://fangjie.sinaapp.com/?p=141 转载请注明出处 学习Android也有一段时间了.感觉大部分的Android应用都有非常多类似的组件,所以就打算做了 ...
- 从调试角度理解ActionContext、OgnlContext、OgnlValueStack的关系
被调试代码: package web; import java.util.Map; import javax.servlet.http.HttpServletRequest; import or ...
- 搜索引擎根据原Sphider的脚本修正后的 Sphider-plus 2.2
搜索引擎根据原Sphider的脚本修正后的 Sphider-plus 2.2 标签: 搜索引擎脚本search数据库authorizationjavascript -- : 1412人阅读 评论() ...
- Composer fails to download http json files on "update", not a network issue, https fine
"repositories": [ { "packagist": false }, { "type": "composer&quo ...
- python-wechatAutoReword
python-微信自动回复功能,基于itchat 2017.9.6 实现群@自动回复 #! /usr/bin/env python3.5.2 # coding="utf-8" im ...