小编gav*_*net的帖子

NSURLSession后台下载 - 恢复网络故障

在阅读了有关使用新iOS7 api(NS​​URLSession)进行后台下载的Apple文档后,我有点失望.我确信Apple在后台管理网络可用性的暂停/恢复(或提供这样做的选项),但没有...

所以阅读文档,这就是我们所拥有的:

https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/URLLoadingSystem/NSURLSessionConcepts/NSURLSessionConcepts.html

当任何任务完成时,NSURLSession对象使用错误对象调用委托的URLSession:task:didCompleteWithError:方法,如果任务成功完成,则调用nil.如果任务是可恢复的下载任务,则NSError对象的userInfo字典包含NSURLSessionDownloadTaskResumeData键的值.您的应用应使用可访问性API来确定何时重试,然后应调用downloadTaskWithResumeData:或downloadTaskWithResumeData:completionHandler:创建新的下载任务以继续下载.转到步骤3(创建和恢复任务对象).

到目前为止,我理解解决方案,但我的问题是:哪种架构最适合处理网络丢失并在后台继续下载?

在我这边我正在使用可达性,每次网络可用时,我恢复所有任务(在创建时通过NSArray引用),并在网络丢失时暂停它们.这在前景中效果很好但是对于背景我需要帮助以下几点:

  • 如果我的应用程序在前台没有连接,如果我在没有连接的情况下进入后台,我的所有任务都将暂停,如果网络可用则不会返回...

  • 在后台丢失网络,停止我的所有下载/任务.场景:

    • 在前台,我开始下载我的任务
    • 我转到后台,10秒后切换到"aireplan模式"
    • 我的所有任务都出错了.所以在方法URLSession:task:didCompleteWithError:我使用downloadTaskWithResumeData恢复它们,或者如果我不能(因为有些没有足够的恢复数据)我正在创建一个新任务而不恢复它(除非网络回到那个时间).
    • 然后我把wifi放了
    • 因为我还在后台,所以当网络回来而没有启动应用程序时,我无法触发"恢复"...

我如何解决这些问题?我错过了什么吗?

ios ios7 nsurlsession

19
推荐指数
1
解决办法
1万
查看次数

如何使用PHP与Instagram共享链接和照片

如何使用PHP与Instagram共享链接和照片?我找不到"与instagram共享照片"的任何内容.

php photo sharing instagram

4
推荐指数
1
解决办法
2万
查看次数

Node.js忽略除第一个之外的所有查询字符串参数

我不能说服Node.js看到我的URL中的第二个参数:

http://localhost:8888/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00
Run Code Online (Sandbox Code Playgroud)

我使用以下命令启动Node.js服务器:

node --debug ./router_rest.js
Run Code Online (Sandbox Code Playgroud)

我的"router_rest.js"文件中有以下代码:

require("http").createServer(function (req, res) {
  //  For PUT/POST methods, wait until the
  //  complete request body has been read.
  if (req.method==="POST" || req.method==="PUT") {
    var body = "";
    req.on("data", function(data){
      body += data;
    })

    req.on("end", function(){
      return routeCall(req, res, body);
    })

  } else {
    return routeCall(req, res, "");
  }
}).listen(8888);
Run Code Online (Sandbox Code Playgroud)

我从命令行进行以下调用:

curl http://localhost:8888/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00
Run Code Online (Sandbox Code Playgroud)

当我调试并检查'req'参数时(在上面的匿名函数中),url属性显示为:

/cities?tag=123
Run Code Online (Sandbox Code Playgroud)

我原以为报告的网址是:

/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00
Run Code Online (Sandbox Code Playgroud)

即使我切换参数,节点仍然只能看到第一个.

为什么最后一个参数(即日期)被截断了?

javascript rest curl node.js query-string

4
推荐指数
1
解决办法
822
查看次数

标签 统计

curl ×1

instagram ×1

ios ×1

ios7 ×1

javascript ×1

node.js ×1

nsurlsession ×1

photo ×1

php ×1

query-string ×1

rest ×1

sharing ×1