【译】在AIR3.5中,iOS上的SharedObject的行为改变

【译】在AIR3.5中,iOS上的SharedObject的行为改变

原文地址:http://blogs.adobe.com/airodynamics/2012/12/10/changed-behavior-of-shared-object-on-ios-in-air-3-5/

对于AIR3.4和AIR3.5,它们的SharedObject的保存路径不同:

AIR 3.4:

AppName/Library/Application Support/com.namecompany.name/Local Store/ #SharedObjects/Filename.swf

Filename.swf 就是应用程序描述文件app-xml中的 <Filename> 标签指定的值。

AIR 3.5:

AppName/Library/Application Support/com.namecompany.name/Local Store/ #SharedObjects/Content.swf

Content.swf 就是应用程序描述符文件app-xml中的 <Content> 标签包含的主swf的文件名。 继续阅读【译】在AIR3.5中,iOS上的SharedObject的行为改变

SharedObject.onSync的研究

先来看下面的这段服务器端代码(so.asc):

application.onAppStart=function(){
so = SharedObject.get("test1",true);
so.onSync = function(l){
trace("SO已经更新!");
}
}
application.onConnect = function(c, appid, cid, p1, p2, p3){
application.acceptConnection(c);
so.setProperty(cid, p1);
trace(so.size());
}

无论我怎样努力,我都无法让so.onSync执行,可是客户端的onSync却工作的很好!我想尽办法,用了2个小时的时间,最终还是失败。直到我在FCS的帮助中找到这段话:

Note: Changing or deleting a property on the server side using the SharedObject.setProperty() method always succeeds, so there is no notification of these changes.

看来,仔细研究帮助文件的每句话是非常有帮助的。我一直不知道在服务器端改变或者删除SharedObject属性是不会有通告的。

那么,如果是proxy SharedObject又会有怎样的情况?下面是一个例子,这个例子由一个客户端、两个服务器端程序组成。客户端的代码如下:

继续阅读SharedObject.onSync的研究

代理共享对象的使用

 :em26: chat Union站点开发过程中,碰到在线列表问题:
在主持人方面,应该能够看到自己房间中的所有客人;而在客人方面,应该能够看到自己所在房间的客人,同时也能看到所有在线的主持人一方便切换房间。对于这个功能,我打算这样实现: 继续阅读代理共享对象的使用

Flash Communication Server并不会将修改的SO值立刻写入文件

使用NetConnection.getRemote()方法可以得到对于Flash Communication Server永久的服务器端ShareObject(SO)。这种永久的SO实际上是以一个二进制文件的形式存在于服务器上的,扩展名为fso。但是据我对此文件的观察,当客户端或者服务器程序对SO值进行了修改、添加、删除等操作后,fso文件并不会立刻更新。经过多次的实验发现,FCS会在以下某种情况发生的时候更新fso文件:

  1. 客户端NC关闭
  2. 服务器端Client关闭
  3. 服务器端Application退出
  4. 调用SharedObject.flush()方法
  5. 调用SharedObject.close()方法