1、  Air如何判断android、ios 平台网络连接状态?

Android,使用as3原生api:

  1. if(NetworkInfo.isSupported)//只有android支持
  2. NetworkInfo.networkInfo.addEventListener(Event.NETWORK_CHANGE,onNetWorkChanged);
  3. onNetWorkChanged();
  4. }
  5. rivate function onNetWorkChanged(e:Event = null):void
  6. {
  7. var isActived:Boolean =false;
  8. varinterfaces:Vector.<NetworkInterface> =NetworkInfo.networkInfo.findInterfaces();
  9. varnetInterface:NetworkInterface;
  10. for ( var i:int = 0, len:int= interfaces.length; i < len; i++)
  11. {
  12. netInterface =interfaces[i];
  13. if(netInterface.name.toLowerCase()== "wifi" && netInterface.active) {
  14. isActived= true;
  15. break;
  16. } elseif(netInterface.name.toLowerCase() == "mobile" &&netInterface.active) {
  17. isActived= true;
  18. break;
  19. }
  20. }
  21. PhoneConfig.isOpenNet =isActived;
  22. if(isActived == false)
  23. {
  24. MsgManager.show("当前网络不可用,请检查你的网络设置。");
  25. }
  26. }

Ios平台,需要引入独立开发的ane扩展和类库,判断核心代码:

  1. if(netInterface.name.toLowerCase()== "en0" && netInterface.active) {//wifi
  2. isActived= true;
  3. break;
  4. }else if(netInterface.name.toLowerCase()== "pdp_ip0" && netInterface.active) {//gprs
  5. isActived= true;
  6. break;
  7. }

2、  iphone 5读不到正确尺寸问题

ios平台读取stageWidth和stageHeight方法和普通的air方法一致,但iphone5出现读取不正确的情况。

解决方法:需要根目录放一张名为Default-568h@2x.png尺寸为640*1136的图片,并且打包进去。

详情见http://zengrong.net/post/1752.htm#more-1752

3、  ios平台运行 release版本中途卡住问题

同一个文件 加载到当前域 加载第二次时 就会卡住(ipa调试版正常,release版就有问题;androidapk不论是调试版还是release都正常)

4、  打包ipa失败,提示无效的文件:

打包ipa时,如果文件里面有一个不正确格式的swf,打包必定失败;如果把swf换成其他不常用文件名,即可解决。

5、  android、ios平台最小化、关闭电源时app的检测和处理方式

手机测试结果:

1)android中 按home键或电源键都是使程序后台运行,socket不断。

2)ios中按home键是使程序后台运行,socket不断,按电源键程序后台运行,但socket断。

通过事件ACTIVATE、DEACTIVATE来进行代码逻辑控制

NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE,onActivate);

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,onDeactivate);

6、  android、ios上文件存储方法

核心代码:

  1. this.saveSDCardFile(File.applicationStorageDirectory.url+ "/aa.swf", btye);
  2. (this.getSDCardFile(File.applicationStorageDirectory.url + "/aa.swf");
  3. /**
  4. * 读取sd卡文件
  5. */
  6. private functiongetSDCardFile(url:String):ByteArray
  7. {
  8. var file:File =File.applicationStorageDirectory.resolvePath(url);
  9. if(file.exists == false)
  10. return null;
  11. var stream:FileStream = new FileStream();
  12. stream.open(file,FileMode.READ);
  13. var bytes:ByteArray = new ByteArray;
  14. stream.readBytes(bytes,0, stream.bytesAvailable);
  15. stream.close();
  16. return bytes;
  17. }
  18. /**
  19. * 往sd卡上存储文件
  20. */
  21. private functionsaveSDCardFile(url:String, bytes:ByteArray):void
  22. {
  23. var file:File =File.applicationStorageDirectory.resolvePath(url);
  24. var stream:FileStream = new FileStream();
  25. stream.open(file,FileMode.WRITE);
  26. stream.writeBytes(bytes);
  27. stream.close();
  28. }

注意android和ios上一些目录路径不一样

  1. trace( File.applicationDirectory.url);//App:/ (/data/data/app.appId/app/assets)
  2. trace(File.applicationStorageDirectory.url);//|app-storage:/ (/data/data/app.appID/appID/LocalStore)
  3. trace(File.documentsDirectory.url);
  4. trace(File.userDirectory.url);
  5. trace(File.desktopDirectory.url);
  6. trace(File.createTempDirectory().url);//data/data/app.appId/cache
  7. //android:
  8. //                  app:/
  9. //                  app-storage:/
  10. //                  file:///storage/sdcard0
  11. //                  file:///storage/sdcard0
  12. //                  file:///storage/sdcard0
  13. //                  file:///data/data/air.TestLoad.debug/cache/FlashTmp.u15893
  14. //ios:
  15. //                  app:/
  16. //                  app-storage:/
  17. //                  file:///var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA/Documents
  18. //                  file:///var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA
  19. //                  file:///var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA/Desktop
  20. //                  file:///private/var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA/tmp/FlashTmp.bDIE2x

Android 和 ios 文件系统差异http://www.cnblogs.com/sevenyuan/archive/2013/03/07/2948300.html

7、  游戏过程中的待机处理,比如在激烈pk中不允许手机进入睡眠状态:

通过设置NativeApplication.nativeApplication.systemIdleMode属性

  1. /**
  2. * 是否关闭 休眠模式
  3. * @param value
  4. */
  5. public functionkeepAwake(value:Boolean):void
  6. {
  7. if(value)
  8. NativeApplication.nativeApplication.systemIdleMode= SystemIdleMode.KEEP_AWAKE;
  9. else
  10. NativeApplication.nativeApplication.systemIdleMode= SystemIdleMode.NORMAL ;
  11. }

8、  如何读取air的app配置文件?如何读取里面的版本号?

  1. //版本号
  2. public function get version():String
  3. {
  4. var appDescriptor:XML =NativeApplication.nativeApplication.applicationDescriptor;//配置文件
  5. var ns:Namespace =appDescriptor.namespace();
  6. return "" +appDescriptor.ns::versionNumber;
  7. }

9、  统计流量功能(未找到as3原生api支持,可通过第三方ane扩展实现)

10、手机加载大文件解压缩很慢,卡住问题(暂无较好的规避方法)

11、  检测鼠标按下菜单键、及其他键的方法及响应

  1. NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN,this.keyHandler);
  2. private function keyHandler(e:KeyboardEvent):void
  3. {
  4. if(e.keyCode==Keyboard.BACK)
  5. {
  6. e.preventDefault();  //取消返回键的退出事件
  7. ExitPane.instance.show();
  8. }
  9. elseif(e.keyCode== Keyboard.MENU)
  10. {
  11. this.times++;
  12. if(times>= 5)
  13. ClientConfig.webDebug= true;
  14. }
  15. elseif(e.keyCode == Keyboard.SEARCH)
  16. {
  17. }
  18. else  if (e.keyCode == Keyboard.HOME) {
  19. //Handle Home button.
  20. }
  21. }

12、  手机调试不方便怎么办?设置手机代理,把ip指向电脑,这样所有数据包就会通过电脑发送和接受,用电脑抓包调试。

13、  其他知识点:

运行ios发行版ipa特有问题:

1)uint和int的比较:int类型的-1大于uint类型的0;

2)String(null) 依旧是null值,而不是字符串的"null"

NativeApplication 的exit() 方法不会导致调度exiting 事件;

android中任务管理器中结束应用也不会派发exit事件,ios中未知

ios下通过任务管理器关闭app,app本身无法控制退出

flash builder 编译提示错误:Erroroccurred while packaging the application: Map failed

解决办法:一般清理一下项目就ok了

stage.displayState =StageDisplayState.FULL_SCREEN

设置全屏后立刻读取stagewidth和stageheight是不准确的,需要延时到下一帧再读取

桌面 移动设备 api支持的差异http://help.adobe.com/en_US/air/build/WS144092a96ffef7cc16ddeea2126bb46b82f-8000.html

adt 打包时目标参数详解 http://help.adobe.com/zh_CN/air/build/WS901d38e593cd1bac1e63e3d128cdca935b-8000.html

使用AIR进行移动APP开发常见功能和问题(下)的更多相关文章

  1. 使用air进行移动app开发常见功能和问题(一)

    1.  获取最近联系人 思路:侦听Geolocation的update事件,获取经度和纬度信息,再把坐标信息上传至服务器,服务器比较坐标信息算出距离,返回最近位置的若干个人. update时间在2种情 ...

  2. 使用air进行移动app开发常见功能和问题(二)

    1.  Air如何判断android.ios 平台网络连接状态? Android,使用as3原生api: if(NetworkInfo.isSupported)//只有android支持 Networ ...

  3. 使用AIR进行移动APP开发常见功能和问题(上)

    1.  获取最近联系人 思路:侦听Geolocation的update事件,获取经度和纬度信息,再把坐标信息上传至服务器,服务器比较坐标信息算出距离,返回最近位置的若干个人. update时间在2种情 ...

  4. APP测试常见功能测试点汇总

    本文总结了一些APP功能测试中经常遇见测试点,仅供参考,是好早以前看哪位前辈总结的,一直在使用,所以也稍微的修改了下放到自己的博客中,以备日后温习.1.安装和卸载安装和卸载是任何一款APP中都属于最基 ...

  5. pc蛋蛋app开发定制

    如今的pc蛋蛋app开发和pc蛋蛋软件开发互联网已经不再是一个新兴行业,对打仗的团队也要求更加正规化.对于产品技术运营市场等角色来说,如果每个人都能有比较全面的视野,那这个产业将是一个全新的趋势,单一 ...

  6. APP开发外包时常见的错误

    时代在发展,科技在进步,很多企业都想要开发出属于自己的一款APP.然而,不是每个企业都有开发团队或是专门雇一个技术人员来做的,有一个好方法就是把开发APP的工作外包出去,找一个比较好的外包公司根据自己 ...

  7. 如何用HMS Nearby Service给自己的APP开发一个名片交换功能?

      在工作和生活中,遇见新的同事或者合作伙伴,交换名片是一个常见的用户需求,纸质名片常忘带.易丢失,是客户的一个痛点.因此,市场上出现了很多交换电子名片的APP和小程序.那么,如何给自己的APP开发一 ...

  8. 关于手机APP开发的一些常见误解

    移动应用不适用于小型企业和创业公司 如果你想要开发一款移动APP,那么在前期开发一种偏见的态度并不是一个好主意.如果你认为移动APP只有跨国公司和大企业创业者才会去开发,那么你可能错过了成功的捷径.而 ...

  9. android软件简约记账app开发day10-主页面模块--头信息的展示,和之后功能完善的目标。

    android软件简约记账app开发day10-主页面模块--头信息的展示,和之后功能完善的目标. 今天来写主界面头信息的展示,也就是将第一天的写的layout中的item_main_top展示到主界 ...

随机推荐

  1. 怎样把人物处理的清晰PS教程

    首先打开PS软件,导入一张人物图片 然后复制图层,点滤镜---杂色----减少杂色 点高级 点确定. 点图像-----调整-----匹配颜色在点一下中和,中和看图效果,也可点 也可不点 切记,然后确定 ...

  2. js判断各个浏览器

    其实,实际写js的过程中,用功能判断”鸭shi辨形“的方法就可以了,不过,很多地方考试还是会问.所以总结一下,大部分都是分析navigator来实现的. var ua=navigator.userAg ...

  3. Struts2--模块包含

    login.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUB ...

  4. PAT (Advanced Level) 1082. Read Number in Chinese (25)

    模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  5. 计算机学院大学生程序设计竞赛(2015’12) 1003 The collector’s puzzle

    #include<cstdio> #include<algorithm> using namespace std; using namespace std; +; int a[ ...

  6. (中等) HDU 1828 Picture,扫描线。

    Problem Description A number of rectangular posters, photographs and other pictures of the same shap ...

  7. iOS技术框架构和更新版本的技术特性

    Core OS层 Sytem 系统层包括内核环境,驱动及操作系统层unix接口.内核以mach为基础,它 负责操作系统的各个方面,包括管理系统的虚拟内存,线程,文件系统,网络以及进程间通讯.这一层包含 ...

  8. bzoj4010: [HNOI2015]菜肴制作【拓扑排序】

    想到了一个分治方法,每一次尽量放小的那个,把它依赖的放在左边,不依赖的放在右边. TLE 80: #include <bits/stdc++.h> #define rep(i, a, b) ...

  9. 苹果App Store开发者帐户从申请,验证,到发布应用(4)

    苹果App Store应用内支付(In-App Purchase) IAP简介 IAP的全称是In-App Purchase,应用内付费.这种业务模式允许用户免费下载试用,对应用内提供的商品选择消费, ...

  10. Nginx 在configure时的参数

    Nginx 使用 Unix 下常用的 './configure && make && make install' 过程来编译安装. configure 脚本确定系统所具 ...