【发布时间】:2018-01-03 22:12:47
【问题描述】:
我有一个 AIR 应用程序 (AS3),它显示来自本地 xml 文件的信息。
我想知道是否可以让代码检查互联网上 xml 文件的版本,看看我的服务器上是否有更新的版本。如果是这样,应用程序将下载并替换 xml 文件。
这样我就不必为了更新 xml 文件信息而更新所有应用程序。
而且,你知道IOS(或Android)是否可以允许应用在用户不知情的情况下下载和替换xml?
我在想这样的事情,但我从未尝试过制作要下载的文件并替换 AS3 上的原始文件:
if(myXMLfile.name == data.name_of_xml_Online){
//do nothing
else{
startDownload();
}
function startDownload():void
{
var request:URLRequest = new URLRequest();
request.url = http://www.mywebsite/xmlfile.xml;
fr.download(request);
}
编辑
这就是我所做的:
function startDownload():void{
var urlString:String = "http://mywebsite/horaires3.xml";
var urlReq:URLRequest = new URLRequest(urlString);
var urlStream:URLStream = new URLStream();
var fileData:ByteArray = new ByteArray();
urlStream.addEventListener(Event.COMPLETE, loaded);
urlStream.load(urlReq);
function loaded(event:Event):void {
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
writeFile();
}
function writeFile():void {
var file:File = File.applicationStorageDirectory.resolvePath("horaires3.xml");
var fileStream:FileStream = new FileStream()
fileStream.open(file, FileMode.WRITE);
urlRemote_txt.text = file.url;
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();
trace("The AIR file is written.");
}
}
文件已下载,没有错误,但似乎没有替换应用程序的horaires3.xml..
urlRemote_txt.text = app-storage:/horaires3.xml
在我为本地 xml 文件输入 urlLocal_txt.text 之前,它是 = horaires3.xml
所以似乎有 2 个不同的“目录”,还是因为我在计算机而不是设备上测试它?
请注意,对于原始 horaires3.xml,它通过 Adobe Animate 中的发布设置包含在我的项目中。
也许,我必须想办法将我原来的 horaires3.xml 文件移动到 app-storage:/ location...?
如果有人对此事有任何想法。
【问题讨论】:
-
您无法替换原始文件,因为 app:/ 位置是只读的。但是,您可以完全访问 app-storage:/ (注意:一个斜杠是正确的)位置,我认为您甚至不需要任何权限来写东西它。您可以使用 File + FileStream 类将文件写入存储文件夹。
-
感谢您的回答。那么,如果我想更新应用程序的 xml 文件,你建议我怎么做?
-
我不明白你的问题是什么。您无法设计出合适的算法?你不知道怎么翻译成AS3?
-
冷静点,伙计。这是一个寻求帮助的论坛。如果我知道该怎么做,你真的认为我会花时间发帖吗?显然我不知道使用什么逻辑。所以,如果你能帮忙,很好。如果没有,则无需发布任何内容。
-
其实 Stack Overflow 是一个问答网站,not a forum。至于让自己冷静下来,请考虑到您正在向某个您要求自愿免费帮助您的人讲课。 @steph45
标签: android ios xml actionscript-3 air