Cristalab

                 ¿Quieres registrarte?

Detectar la conexión a internet en AIR con Flex 3 Beta 3

20 de Diciembre del 2007

Este tip lo armé en base a este problema que me encontré, pues hasta Flex 3 Beta 2, había una clase llamada Shell, con la cual uno podía detectar la conexión de la computadora, esto cambia en Flex 3 Beta 3, pues desaparecen la clase Shell y el evento que detecta la conexión lo mandan a NativeApplication, el siguiente ejemplo nos muestra como se detecta la conexión, es muy sencillo y requiere una llamada a cualquier página sobre Internet, pues es lógico que si se quiere saber si hay conexión a Internet, nos debe de poder devolver un resultado.

No voy a entrar a tanto detalle como: "Accedió a la página, pero aun así devolvió error" pues eso sería error de programación.

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
   <mx:Script>
      <![CDATA[
         import mx.rpc.events.ResultEvent;
         import mx.rpc.events.FaultEvent;
         import mx.controls.Alert;
         import flash.events.Event;
         import mx.managers.CursorManager;
         
         //Variable que nos ayuda a verificar si estamos o no en línea
         private var enLinea:Boolean = false;
         
         private function init():void {

            //mandamos llamar nuestro HTTPService
            rss_hs.send();

            //Agregamos el Listener que estara al tanto de lo que sucede con la conexión
            flash.desktop.NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, net_change);
         }
         private function invoke(e:mx.rpc.events.InvokeEvent):void {
            CursorManager.setBusyCursor();
         }
         private function fault(e:FaultEvent):void {
            //Si no pudo alcanzar la página, esta desconectado
            enLinea = false;
            CursorManager.removeBusyCursor();
            Alert.show("Hubo un error al procesar su solicitud.\nAl parecer estas desconectado de internet");
         }
         private function result_rss(e:ResultEvent):void {
            //Si hay un resultado, pues si estamos conectados
            enLinea = true;
            CursorManager.removeBusyCursor();
         }
         private function net_change(e:Event):void {
            /* invertimos el valor cada vez que cambia el estado de la red
             * esto es por que cuando hay exito en la consulta, se pone en true la variable
             * entonces cuando se hace el cambio de estado pasa de true a false
             * o bien, de conectado a desconectado y cuando no hay éxito, pues viceversa
             */
            enLinea = !enLinea;
            if(enLinea) Alert.show("Conectado!");
            else Alert.show("Al parecer te has desconectado!");
         }
      ]]>
   </mx:Script>
   <mx:HTTPService id="rss_hs" url="http://www.cristalab.com/rss.php" useProxy="false" method="POST" resultFormat="e4x"
      invoke="invoke(event)" fault="fault(event)" result="result_rss(event)"/>
</mx:WindowedApplication>


Tampoco hay un procesamiento del resultado, pues en este momento no es el tema.

Saludos y espero que les sirva! ^^


Artículos Relacionados


Etiquetas flex air actionscript_3

Comentarios | Enviar un comentario
¿por que la etiqueta de este tip es apollo si esto es air y flex?

¿quien pone las etiquetas en cristalab? asi es imposible encontrar lo que uno busca en las categorias
Por: confundido_blog
Apollo = AIR, no?
Por: Maxerker_blog

Maxerker_blog :

Apollo = AIR, no?

así es ^^, solo que Apollo era un code name y AIR ya es el oficial
Por: master_of_puppetz
Intenete correr este escript con flex 3 beta 3, pero la propiedad flash.desktop.NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE,onNetworkChange);
no la entiende por queno existe la libreria flas.desktop en flex 3.0 beta.
Luego no funciona
Por: Edgar_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.