Já muitos se depararam com a necessidade de verificar se a vossa aplicação adobe air têm disponivel ligação à internet, ora… eu ja vi alguns exemplos com URLRequest, URLLoader e até Remote Object. Por seu lado, isto numa aplicação Flex poderia ser uma das hipoteses, mas numa aplicação AIR é muito mais simples.
No meio das classes da framework disponiveis pro AIR é o URLMonitor (air.net.URLMonitor) que com apenas 2/3 linhas de código permite saber se a aplicação dispõe de ligação à internet, se não dispõe e como a ajuda de 1 ou 2 eventos permite-nos controlar o estado da nossa aplicação.
Eu fiz uma class bem simples, que fica aqui para quem quiser, o seu uso é muito facil, basta na aplicação principal (ou onde quiserem) colocar o seguinte:
private function init():void {
var monitor:iMonitor = new iMonitor();
monitor.addEventListener("NET_CHANGE", statusAlterado);
monitor.start();
}
private function statusAlterado(e:Event):void {
monitor.isAlive()==true ? Alert.show("Foi detectada uma ligação à internet!!") : Alert.show("Foi perdida a ligação à internet!")
}
É tão simples quanto isto…
Segue a class para download : iMonitor




3 Comentários
Boa, Mário!!!
Gostei da solução.
Um abraço!
Elvis Fernandes
opa valeu
isso é bem útil =D
Qual o principal problema da Adobe nessa abordagem?
Bem, basicamente ele verifica uma URL e os seus status (404, 200, etc).
Agora se como o endereço de conexão eu indicar uma servlet, o que acontece? Tcharan – a servlet vai entender aquilo como uma conexão, vai retornar o status OK (200) e vai executar a ação prevista!
Pois é, tive um sério problema com isso. Tente usar isso com o BlazeDS, o que acontece? Ele sai criando sessão pra todos os lados.
E eu ainda tenho outro problema: descobrir se o cabo de rede está conectado pelo Air.
Um outro quesito que não gosto do URL monitor é o consumo de banda. Já viu como fica usando o ZoneAlarm? Alto.
A melhor abordagem que eu consegui até agora pra monitorar conexão é ter um cliente em C# no cliente e me comunicar com ele por Socket. Vamos ver o que a Adobe vai fazer lá na frente…
[]’s!!!