我正在使用Flash Builder,Flex 4.6和AIR 3.5为IOS构建移动应用程序。我正在调查使用StageWebView呈现一些HTML5内容。
我想要做的是将内容构建到应用程序中,而不是将其放在服务器上。它相对静止。但我读(并确认)StageWebView不能直接使用应用程序内文件。但是根据建议,我有应用程序将内容复制到临时文件夹,然后为StageWebView创建一个file:// URL,这似乎有效:
// create the view
var webView:StageWebView = new StageWebView();
webView.stage = this.stage;
webView.viewPort = new Rectangle( 0, 0, stage.stageWidth, stage.stageHeight);
// copy the HTML5 content to a temp directory
var src:File = File.applicationDirectory.resolvePath("myFolder");
var temp:File = File.createTempDirectory().resolvePath("myFolder");
copyFolderContentsToAnotherFolder(src,temp);
// what's the URL
var newPath:String = "file://" + temp.nativePath + "/index.html";
// load it
webView.loadURL(newPath);
这是个坏主意吗?临时文件是否会在我的设备中堆积而无法删除它们?
我还想过让app通过监听端口并在请求的文件到来时提供数据来实现最小的HTTP服务器。这将允许我们从应用程序内的位置向StageWebView提供文件,而无需复制。我们在桌面播放应用程序中执行此操作,它的工作非常好。但是,这种方法使用ServerSocket,我发现移动设备不支持它。有没有其他方法可以做到这一点?
最后,StageWebView在Flash Builder iOS模拟器中无法正常工作,使调试变得困难。最好去FB 4.7,它应该允许我在XCode的iOS模拟器中使用它吗?
感谢
答案 0 :(得分:3)
好吧,似乎我可以直接解决应用内内容,我只需为它构建一个file:// URL:
var src:File = File.applicationDirectory.resolvePath("myFolder/index.html");
var newPath:String = "file://" + src.nativePath;
webView.loadURL(newPath);
答案 1 :(得分:0)
我想到这个已经太久了。但是我记得我能够在iOS中使用app内容而无需复制。但我今天正在阅读这在Android上可能无法实现的目标。
答案 2 :(得分:0)
似乎StageWebView与iOS一起使用时,最适合远程文件。所以,我正在使用一些实现简单HTTP服务器的Actionscript代码,提供本地文件。然后,我给StageWebView http urls使用localhost和一个端口号。工作膨胀。
答案 3 :(得分:0)
Adobe更新SDK后 - @Jesse Crosen方法不适用于Android,但仅适用于iOS。 要使其在Android上运行,您必须复制打包文件,如下所示:
var htmlFile:File = File.applicationDirectory.resolvePath("html/index.html");
var fileDest:File = File.applicationStorageDirectory.resolvePath("html/index.html");
htmlFile.copyTo(fileDest, true);
webView.loadURL("file://" + htmlFile.nativePath);
答案 4 :(得分:-1)