我有一个应用程序可以下载每隔几个月更新一次的 PDF,每次我下载某个 PDF 时,我还会下载一个包含一个字符的 .txt 文件。每次我在我的服务器上上传更新的 PDF 时,我也会在服务器上的 .txt 文件中增加一个字符数。
当用户点击我的应用程序中的“更新”按钮时,我将来自服务器的 .txt 文件中的字符串与本地 .txt 文件中的字符串进行比较。
这是检查新 PDF 是否可用的一种非常轻量级的方法,但我想问的是是否有更好的方法或更简单的方法来执行此操作,而不必为我创建的每个 PDF 文件创建一个 .txt 文件我的服务器上有吗?
提前感谢您提供的任何帮助!
这是我用来检查新 PDF 的代码:
NSString *documentDirectory = [(AppDelegate *)[[UIApplication sharedApplication] delegate] applicationDocumentsDirectory];
NSString *path = [documentDirectory stringByAppendingPathComponent:@"test.txt"];
NSString *server = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"foo.com/test.txt"] encoding:NSASCIIStringEncoding error:nil];
NSString *local = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:nil];
if(![local isEqualToString:server])
{
// I Download the new PDF and the new .txt file here;
// simple NSURLConnection stuff, no need to elaborate
}
最佳答案
在我脑海中,HTTP HEAD
方法可用于仅获取 header 而不是数据。如果标题中的创建日期晚于您下载数据的最后日期,则该获取新副本了。这可以通过 NSURLRequest
和 NSURLConnection
来完成。
如果您的服务器不支持 HEAD
请求或其他原因阻止了它的使用,您可以拥有第二个 TXT 文件,其中包含版本/哈希/唯一标识符。而是下载它并与存储的值进行比较。如果更改,请下载完整的 PDF 并将版本文本文件保存到磁盘以供以后引用。
如果安全是个问题并且您需要能够信任服务器,则在任何一种情况下都使用 HTTPS。
关于objective-c - 有没有比我的实现更好的方法来检查更新的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553964/