NetworkInfo for iOS

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:NetworkInfo for iOS
  • 本文链接:http://zengrong.net/post/1644.htm

NetworkInfo for iOS

我在Android上使用 flash.net.NetworkInfo 实现了socket连接在网络状态改变时的自动重连机制,但却发现在iOS设备上不支持 flash.net.NetworkInfo 。

Adobe的 API文档 中说,NetworkInfo需要 AIR Profile Support 支持,我在该文档中找到 mobileDevice Profile ,发现 NetworkInfo 一栏的值为 Check ,也就是说,必须由开发者使用 NetworkInfo.isSupported 来检测设备是否支持 NetworkInfo。

悲催的是,iOS设备的 NetworkInfo.isSupported 是 false !这就意味着,不能使用 flash.net.NetworkInfo 来获取iOS设备的网络状态。

Adobe AIR Developer Center 中提供了一个iOS的原生插件 NetworkInfo native extension sample 来实现获取iOS设备中的网络状态。该文章中直接提供了ANE包的下载,可以直接在Windows环境下使用。

该插件实现了三个类:

com.adobe.nativeExtensions.Networkinfo.InterfaceAddress; 
com.adobe.nativeExtensions.Networkinfo.NetworkInfo; 
com.adobe.nativeExtensions.Networkinfo.NetworkInterface; 

名称与 flash.net 下的类相同,但包不同,因此使用的时候要注意包的区别。

这个插件的功能并不完整。因为 flash.net.NetworkInfo 支持网络状态变更通知 (flash.events.Event.NETWORK_CHANGE) ,但该插件不支持。

如果希望在一个项目中同时兼容 Android 和 iOS 的网络状态,这篇文章提供了一些思路: Getting NetworkInfo from both Android and iOS