我正在开发一个使用远程存储数据的 iPhone 应用程序。该应用程序仅供我们的客户使用(没有应用程序商店),我不允许指定应用程序的上下文。
我可以告诉您的唯一上下文是该应用程序允许输入代码,并下载与该代码相关的数据。
我们的客户告诉我们,有时我们需要在无法访问互联网或速度太慢的地方使用该应用程序。
已经得出的解决方案如下:
我们将尝试在本地 FTP 服务器上下载数据,该服务器实际上只是一个共享目录的路由器,该目录以代码为名称,可通过已知 IP(例如
ftp://192.168.1.1/some-path
)访问。如果失败,它会尝试从 Web 服务器下载。
我发现了 Nico Kreipke 的一个很棒的库,叫做 FTPManager。(点击这里查看它的 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];
我尝试了几个超时值,但无济于事。它总是以超时错误结束。但是,下载代码能够从路由器的共享目录下载数据(使用相同的凭据)。