1

我正在使用 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);

这是一个坏主意吗?临时文件会堆积在我的设备中而无法删除吗?

我还想过让应用程序通过侦听端口并在请求文件到来时为请求的文件提供数据来实现最小的 HTTP 服务器。这将允许我们从应用程序内的位置向 StageWebView 提供文件,而无需复制。我们在桌面空中应用程序中执行此操作,并且效果非常好。但是,该方法使用 ServerSocket,我发现移动设备不支持该方法。有没有其他方法可以做到这一点?

最后,StageWebView 在 Flash Builder iOS 模拟器中不能很好地工作,导致调试困难。最好只是去获取 FB 4.7,它(应该)允许我将它与 XCode 的 iOS 模拟器一起使用吗?

谢谢

4

5 回答 5

3

好吧,看来我可以直接处理应用内内容,我只需要为其构造一个 file:// URL:

var src:File = File.applicationDirectory.resolvePath("myFolder/index.html");
var newPath:String = "file://" + src.nativePath;
webView.loadURL(newPath);
于 2013-02-13T17:14:01.287 回答
0

似乎 StageWebView 与 iOS 一起使用时,最适合远程文件。因此,我正在使用一些 Actionscript 代码来实现一个简单的 HTTP 服务器,提供本地文件。然后,我给 StageWebView 使用 localhost 的 http url 和一个端口号。工作膨胀。

于 2013-11-01T01:33:29.860 回答
0

我已经太久没有考虑这个问题了。但我记得我可以在不复制 iOS 的情况下在应用程序内容中使用。但我今天正在阅读,这在 Android 上可能是不可能的。

于 2013-09-08T23:01:18.000 回答
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);
于 2015-11-20T19:41:50.407 回答
-1

对于正在寻找比编写 HTTP 服务器更简单的该问题的当前解决方案的任何人,对我有用(仅在 iOS 上):

webView.loadURL(new File(new File("app:/myFolder/index.html").nativePath).url);

但是有一个警告,您似乎无法在 URL 的末尾传入查询字符串或哈希。加载主要内容后,可以通过加载javascript:URL 将数据传递给 HTML 内容。

这里有一个页面,其中包含涵盖 iOS 和 Android 的更广泛信息

于 2014-10-22T20:42:10.597 回答