使用的.html,.js文件的iOS应用程序的保存在沙盒(文档目录)文件,以便我能够打开在脱机模式下

2019-07-03 11:13发布

余有要显示的需要,以显示一个图形highcharts.js,jquery.min.js .html文件。 我打算在显示一个UIWebView .html文件。

我看到,当文件(即HTML,highcharts.js,jquery.min)是在应用程序包,我可以使用他们喜欢this--

aPath = [[NSBundle mainBundle] pathForResource:@"htmlfile" ofType:@"html"]; [self.graphWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:aPath isDirectory:NO]]];

在这里,“HTMLFILE”有这样的源泉 -

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TITLE</title>

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="highcharts.js"></script>
<script type="text/javascript" src="htmlfile.js"></script>
<script type="text/javascript" src="global.js"></script>
</head>
<body>
<div id="wrapper">

<div id="container"></div>    
</div>
</body>
</html>

因此,为了显示UIWebView的内容,我只是需要让.html文件和.js文件如包资源在Xcode的构建阶段选项卡。

问题:

如何显示具有像所示,当它被保存在应用程序的沙盒上面的源.html文件?

笏我想:

1.我在App沙盒创建的文件夹一样this--

的NSArray *路径= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

的NSString aFolderPath = [(的NSString)[路径objectAtIndex:0] stringByAppendingFormat:@ “/%@”,@ “文件夹”];

 if(![[NSFileManager defaultManager] isWritableFileAtPath:aFolderPath]){ 

[[的NSFileManager defaultManager] createDirectoryAtPath:aFolderPath withIntermediateDirectories:NO属性:无误差:无]; }

2.然后我复制了HTML,JS文件在App沙盒从App捆绑像this--

的NSString * AJS = [[一个NSBundle mainBundle] pathForResource:@ “JSFile” ofType:@ “JS”];

 aJs = [NSString stringWithContentsOfFile:aGlobaljs encoding:NSUTF8StringEncoding error:nil]; NSString *aPath = [(NSString*)[paths objectAtIndex:0] stringByAppendingFormat:@"/folder/%@",@"JSFile.js"]; [aJs writeToFile:aPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 

现在,所有需要的文件都在一个名为“文件夹”沙箱文件夹,所以,我试图在UIWebView中像this--打开保存的HTML文件

[self.webView的loadRequest:的NSURLRequest requestWithURL:[NSURL URLWithString:pathToHtmlFileinDocumentsDic relativeToURL:[NSURL URLWithString:aFolderPath]]]];

这是行不通的。

Answer 1:

你必须保持你的文件在你的应用程序资源,这里的关键是要保持JavaScript文件的相对链接与HTML文件。 当添加到您的html包中选择“创建任何添加的文件夹的文件夹参考”。 而这样调用你的HTML页面的代码:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"Help"];

  NSURL *indexUrl = [NSURL fileURLWithPath:filePath];

当你所有的HTML网页(包括cssimagesjs )在帮助(或任何其他名称你)的文件夹。 即,它像保持文件夹内的本地静态网站



Answer 2:

可以启动http服务器本地(例如经由https://github.com/robbiehanson/CocoaHTTPServer )和设置/<appPath>/Documents/yourFolder作为服务器根。 然后你就可以在打开UIWebView NSURL :像这样http://localhost:8080/index.html



文章来源: Using .html, .js file saved in the sandbox(Documents directory) of an iOS App so that I am able to open the html file in offline mode as well