start blog post

Checking Network Availability in Adobe AIR

Here's a module that detects whether your Adobe AIR app is connected to the internet.

Net = function() {
    var url       = false; // assigned during init()
    var connected = false; // automatically updated
    var handlerEventComplete = function(e) {
        connected = true;
    };
    var handlerIoError = function(e) {
        connected = false;
    };
    var checkConnection = function() {
        var r = new air.URLRequest(url);
        r.useCache = false; // force a new fetch
        var l = new air.URLLoader();
        l.addEventListener(air.Event.COMPLETE, handlerEventComplete);
        l.addEventListener(air.IOErrorEvent.IO_ERROR, handlerIoError);
        l.load(r); // execute request
    };
    var start = function() {
        air.NativeApplication.nativeApplication.removeEventListener(air.Event.NETWORK_CHANGE, checkConnection);
        air.NativeApplication.nativeApplication.addEventListener(air.Event.NETWORK_CHANGE, checkConnection);
        checkConnection(); // 1st call must be manual, because an event may have already occurred
    };
    return {
        init        : function(u) {
            url = (typeof u == "string") ? u : false;
            start();
        },
        isConnected : function() {
            return connected;
        }
    };
}();

When you're ready to start checking the network connection, you can call Net.init("http://your.web.site/") — I usually use the URL for my app's version.xml file, which the Updater uses. If you just need to know whether you're connected, not necessarily whether a particular resource is available, then Google or some other reliable address should be fine.

The module is event-driven, rather than relying on polling. If you want to change the resource it checks for, simply call Net.init() with the new URL. Note also that this method does not require Adobe's servicemonitor framework, which it would if it polled the address using URLMonitor or ServiceMonitor.

Enjoy!

var tags = [, ];

  • share this post:
  • email a friend
  • float this post
  • digg this post
  • share on stumbleupon
  • submit to technorati
  • tweet this post

end blog post

most viewed this week

least viewed this week