在阅读了有关使用新iOS7 api(NSURLSession)进行后台下载的Apple文档后,我有点失望.我确信Apple在后台管理网络可用性的暂停/恢复(或提供这样做的选项),但没有...
所以阅读文档,这就是我们所拥有的:
当任何任务完成时,NSURLSession对象使用错误对象调用委托的URLSession:task:didCompleteWithError:方法,如果任务成功完成,则调用nil.如果任务是可恢复的下载任务,则NSError对象的userInfo字典包含NSURLSessionDownloadTaskResumeData键的值.您的应用应使用可访问性API来确定何时重试,然后应调用downloadTaskWithResumeData:或downloadTaskWithResumeData:completionHandler:创建新的下载任务以继续下载.转到步骤3(创建和恢复任务对象).
到目前为止,我理解解决方案,但我的问题是:哪种架构最适合处理网络丢失并在后台继续下载?
在我这边我正在使用可达性,每次网络可用时,我恢复所有任务(在创建时通过NSArray引用),并在网络丢失时暂停它们.这在前景中效果很好但是对于背景我需要帮助以下几点:
如果我的应用程序在前台没有连接,如果我在没有连接的情况下进入后台,我的所有任务都将暂停,如果网络可用则不会返回...
在后台丢失网络,停止我的所有下载/任务.场景:
我如何解决这些问题?我错过了什么吗?
如何使用PHP与Instagram共享链接和照片?我找不到"与instagram共享照片"的任何内容.
我不能说服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)
即使我切换参数,节点仍然只能看到第一个.
为什么最后一个参数(即日期)被截断了?
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