我想在用户连接到网络时加载网页并将其存储离线(包括图像/资源)。如果用户没有连接到任何网络,那么我应该加载以前存储的网页。我尝试了NSData dataWithContentsOfURL:(NSURL *)url
和NSString stringWithContentsOfURL
,但这些只存储了html内容而不是资源。
提前致谢。
答案 0 :(得分:2)
您可以使用ASIHttpRequest执行此操作。如果您不想使用该项目(它不再处于活动状态),您可以查看代码及其功能。查看this了解更多信息。
答案 1 :(得分:0)
write this data into file using
-(void)writeDataToFile:(NSString*)filename
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if(filename==nil)
{
DLog(@"FILE NAME IS NIL");
return;
}
// the path to write file
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat: @"%@",filename]];
/*NSData *writeData;
writeData=[NSKeyedArchiver archivedDataWithRootObject:pArray]; */
NSFileManager *fm=[NSFileManager defaultManager];
if(!filePath)
{
//DLog(@"File %@ doesn't exist, so we create it", filePath);
[fm createFileAtPath:filePath contents:self.mRespData attributes:nil];
}
else
{
//DLog(@"file exists");
[self.mRespData writeToFile:filePath atomically:YES];
}
NSMutableData *resData = [[NSMutableData alloc] init];
self.mRespData=resData;
[resData release];
}
并在下次加载
答案 2 :(得分:0)
我认为简单的解决方案是“Safari客户端存储和离线应用程序编程指南”,https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html
只有当您使用HTML5和webview制作应用时,到目前为止尚未测试此方法,因此可能会有效。
答案 3 :(得分:0)
我不知道是否有像myWebView.cache4Offline = YES;
这样的单行解决方案,但我担心只要您无法访问网站代码(即如果您想要任何网站可在您的应用内离线使用),您必须自行编程。想一想,它似乎并不那么困难:
NSData dataWithContentsOfURL
从互联网上下载这些资源(由于相对/绝对网址,可能有点烦人)希望有所帮助