在本机 IOS 应用程序中加载多个 Cordova 微应用程序
Posted
技术标签:
【中文标题】在本机 IOS 应用程序中加载多个 Cordova 微应用程序【英文标题】:Load Multiple Cordova Micro Apps inside Native IOS apps 【发布时间】:2015-11-25 09:02:16 【问题描述】:我必须根据 Native ios 应用程序中的用户访问权限加载多个 Cordova 应用程序。 我想在应用程序启动时动态加载 zip 文件并将它们存储在 Documents 或 Libraries 文件夹中,然后解压缩这些文件,然后我尝试在我的视图控制器中使用以下代码直接加载 Cordova 视图
CDVViewController* viewController = [CDVViewController new];
viewController.wwwFolderName=@"www";
viewController.startPage=@"abc.html";
viewController.view.frame=CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view];
但问题是,如果我动态指向 Documents 或 Library 文件夹,wwwFolderName 不起作用,它只接受应用程序附带的根文件夹,所以我想知道我应该如何实现这个用例。
【问题讨论】:
可以从 Documents 或 Library 加载 html 内容,但 CDVViewController.wwwFolderName 不准备从那里加载文件。您可以搜索一些下载 html 并加载它的“内容同步”插件,然后检查它们是如何做到的。 【参考方案1】:如果我的理解正确,这里是一个示例,其中 YOUR_APP_PATH 是目录的字符串路径,您要在其中存储应用程序源,而 YOUR_SEARCH_PATH 是 NSLibraryDirectory 或 NSDocumentsDirectory
- (void)openApp
NSString *filePath = [self directoryToApp:YOUR_APP_PATH forSearchPath:YOUR_SEARCH_PATH];
NSURL *url = [NSURL fileURLWithPath:filePath];
NSURLRequest *request = [NSURLRequest requestWithURL: url
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval: 20.0];
[self.webView loadRequest:appReq request;
- (NSURL *)directoryToApp:(NSString *)appPath forSearchPath:(NSSearchPathDirectory)searchPath
NSString *basePath = [self applicationDocumentsDirectory:searchPath].absoluteString;
return [NSURL fileURLWithPath:[basePath stringByAppendingString:appPath]];
- (NSURL *)applicationDocumentsDirectory:(NSSearchPathDirectory)searchPath
return [[[NSFileManager defaultManager] URLsForDirectory: searchPath
inDomains: NSUserDomainMask] lastObject];
【讨论】:
【参考方案2】:让您的 wwwFolderName 如下:
viewController.wwwFolderName=[NSString stringWithFormat: @"file://%@/www", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
这会将起始目录指向文档目录中的 www 文件夹。
【讨论】:
以上是关于在本机 IOS 应用程序中加载多个 Cordova 微应用程序的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight/Cordova 未在 Android 上 Worklight 的嵌入式 WebView 中加载
内容安全策略框架祖先。 iframe 不会在 iOS10 中加载内容