NetworkInfo for iOS

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环境下使用。

该插件实现了三个类:

1com.adobe.nativeExtensions.Networkinfo.InterfaceAddress; 
2com.adobe.nativeExtensions.Networkinfo.NetworkInfo; 
3com.adobe.nativeExtensions.Networkinfo.NetworkInterface; 

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

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

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