Matt Gifford aka coldfumonkeh | Consultant Developer
View Github Profile


Detecting Network Connectivity in Flex AIR applications

Jul 20, 2010

Detecting network connectivity is a crucial part of AIR application development.

If you're releasing or developing AIR applications that require an internet connection, you want to ensure that you have the connectivity before you start running your 'online code' to trap any possible errors that may occur from lack of connection or downtime.

In this brief video tutorial, I outline the basics required to set up network connectivity monitoring functionality inside of your AIR application.

To view the video, click on the video link above, or watch it directly on YouTube.

MXML Code

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark"
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   creationComplete="init()">

	<fx:Script>
		<![CDATA[
			// network monitoring functions
			/* **************************** */

			// import the URLMonitor class
			import air.net.URLMonitor;

			/*
			Set up the URL string variable for the URLRequest to check.
			In this example, let's use google.com as we can be sure 99.99%
			of the time that it will be up and running.
			*/
			private var strURLMonitor	: String = 'http://www.google.com';
			private var	monitor			: URLMonitor;
			[Bindable]
			private var isOnline		: Boolean = false;

			/*
			This function checks the online status by attempting
			to resolve a connection to a remote address
			*/
			private function monitorConnection():void {
				monitor = new URLMonitor(
								new URLRequest(strURLMonitor)
							);
				monitor.addEventListener(
								StatusEvent.STATUS,
								announceStatus);
				monitor.start();
			}

			/*
			Declare the status from the monitorConnection function
			and set the value to the variable isOnline
			*/
			private function announceStatus(e:StatusEvent):void {
				trace("Status change. Current status: " + monitor.available);
				if(monitor.available) {
					isOnline = true;
					/*
					Inside here, you can run any functions or script
					that require network connection, as it exists.
					*/
				} else {
					isOnline = false;
				}
			}

			/*
			The network connection has changed.
			Run the monitorConnection function to check status
			*/
			private function onNetworkChange(event:Event):void {
				trace('network change');
				monitorConnection();
			}
			//

			private function init():void {
				/*
					Keep an eye on network connectivity...
					Any losses, and run the onNetworkChange method
				*/
				NativeApplication.nativeApplication.addEventListener(
						Event.NETWORK_CHANGE, onNetworkChange);

				// run monitorConnection
				monitorConnection();
			}

		]]>
	</fx:Script>

	<s:Label x="10"
			 y="10"
			 text="Online? {isOnline}"
			 width="493"
			 height="167"
			 fontSize="72" />

</s:WindowedApplication>

Latest Blog Posts

Nov 13, 2019
CFML swearjar profanity detection and filtering component library
Read More
Oct 25, 2019
Lucee 5 _InternalRequest method
Read More