1.很多时候,我们写的的html5打包放在APP中,使用nsbundle 去查找([[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]),返回的path总是空的
这个问题我们也不知道原因:
目前的解决方法:
1.使用zip的包,将文件在document文件下面解压缩,然后根据你设好的路径去加载h5文件。
缺陷是h5文件直接暴露出来了。
2.将h5文件放入程序时,不要选择file reference 选择group。
前者创建文件夹,后者只创建分组,
创建分组的可以找的,创建文件夹就不会找到
(Ps: 蓝色文件夹与黄色文件夹的区别
蓝色文件夹(folder)一般作为资源文件夹使用,与黄色文件夹的主要区别是不参与编译,所以说如果你在这些文件夹下编写的逻辑代码是不参与编译的,其他文件也不能直接引用它们,若引用其中文件需要全路径,即绝对路径。你可以试着在蓝色文件夹下创建.h.m文件,你会发现根本创建不了。黄色文件夹也可以对应实际的硬盘文件夹的,这一点你不能相当然哦!!!)
初步推测,是文件查找时没能深层次的去遍历查找。。。。。
网上有个方法分析://www.greatytc.com/p/710c84469e22
这就是xcode本身环境配置不够灵活了。
通过拖动,或者add file to 不能灵活设置这个bundle resource 的里面资源。
但是如果你拖进去的是一个文件夹,如:test/index.html
NSURL *path3 = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
这样返回的path3是空的。但是只要换个调用方法返回的就是真的。
NSURL *path2 = [[NSBundle mainBundle] URLForResource:@"test/index" withExtension:@"html"];
这样path2有值得。
打印出路径后,我们甚至可以自己去拼接这个路径。
NSString *path = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"test/index.html"];
如果涉及到html5跳转的内容可以加上#/projectDetail即可。
NSString *path = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"test/index.html#/projectDetail"];
最后,针对不同情况,如果引用第三方framework,则要在拖动添加后考虑到enbed framework的设置
如果引用第三方bundle资源,则需要在拖动或者add后考虑加copy