【发布时间】:2013-10-10 10:09:28
【问题描述】:
我正在开发一个使用远程存储数据的 iPhone 应用程序。该应用仅供我们的客户使用(没有应用商店),我不允许指定应用的上下文。
我可以告诉你的唯一上下文是该应用允许输入代码,并下载与该代码相关的数据。
我们的客户告诉我们,有时我们需要在互联网无法访问或速度太慢的地方使用该应用。
已经得出的解决方案如下:
我们将尝试将数据下载到本地 FTP 服务器上,该服务器实际上只是一个共享目录的路由器,该目录以代码为名称,可通过已知 IP 访问(例如,
ftp://192.168.1.1/some-path)。如果失败,它会尝试从 Web 服务器下载。
我发现了一个很棒的库,名为 FTPManager,由 Nico Kreipke 编写。 (click here for its GitHub)
很遗憾,当 FTP 地址不可用时,大约需要一分钟才能超时并进入第二步。
有没有人可以帮助减少此超时?也许对 IP 进行快速 ping 操作?如果有,该怎么做?
感谢您的宝贵时间,
蒂亚戈
更多信息
我尝试了一个受 Rauru Ferro 答案启发的解决方案。但不幸的是,它没有帮助。 用于测试的代码如下:
NSString *ftp = [NSString stringWithFormat:@"ftp://user:password@%@/sda1/%@", ip, code]; NSURL *url = [NSURL URLWithString:ftp]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; NSURLResponse *response = nil; NSError *error = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returnedResponse:&response error:&error];我尝试了几个超时值,但无济于事。它总是以超时错误结束。但是,下载代码能够从路由器的共享目录下载数据(使用相同的凭据)。
【问题讨论】: