Conexões HTTP e Socket com BIS BES WAP Wi-Fi e TCP APN em aplicações BlackBerry

Explicarei nesse artigo como preparar sua aplicação para usar conexões com a Internet de forma funcional, decidindo se deve usar transporte por BES (BlackBerry Enterprise Server), BIS (BlackBerry Internet Server), WAP, conexão direta pelo device TCP (APN), ou Wi-fi.

A grande maioria dos desenvolvedores BlackBerry já passaram por esse problema. Inicialmente todos desenvolvedores pensam que basta criar uma conexão normalmente, e tudo estará resolvido. Até que começar a ter os erros “Invalid Tunnel” ou “Can’t Open Connection”, ou erros semelhantes. Esses erros ocorrem pois a conexão não foi configurada corretamente na aplicação, e ela está tentando usar uma conexão indisponível no device.

Nos outros celulares, quando fazemos uma conexão com a Internet em nossa aplicação, o próprio celular pergunta ao usuário qual conexão ele deseja usar, se WAP, ConnectFast, Wi-fi, etc. No BlackBerry não é assim, em cada conexão você precisa definir qual será o meio de transporte dos dados.

Tipos de Conexões

Explicarei inicialmente os tipos de conexão que pode-se ter num BlackBerry:

1- BES - BlackBerry Enterprise Server

Pode ser contratado pela operadora, e normalmente custa mais caro que o BIS. Com esse serviço é possível ter a leitura de e-mails e uso de Internet ilimitado no seu BlackBerry, pagando um valor mensal para a operadora. Com esse serviço, você pode integrar o seu sistema de Gestão ao celular, configurando-o para enviar Push personalizados para suas aplicações BlackBerry, avisando-as de algum evento externo, por exemplo, um novo pedido cadastrado no servidor.

2- BIS - BlackBerry Internet Server

Idêntico ao BES, mas é mais barato, pois não não permite integração de Push do seu sistema de gestão com suas aplicações BlackBerry. Em suma, serve para acessar e-mails e Internet ilimitados, como no BES. Também é cobrado mensalidade para uso, que na Tim custava em torno de R$60,00, e na Claro R$75,00. Aconselho usar Claro, pois ela não cobrará por suas conexões diretas TCP. A maioria dos celulares BlackBerry usam esse tipo de conexão.

3- WAP

É a conexão normal em todo aparelho. Pode ser usada quando o BIS ou BES não estão contratados.

4- Wi-fi

Conexão usando a rede wi-fi de casa, do escritório, do shopping, etc. Você não pagará nada pelo tráfego. Só está disponível, logicamente, em devices que possuem suporte a wii-fi.

5- TCP - APN

Conexão direta do celular usando TCP/IP. Para que esse tipo de conexão seja possível, deve-se configurar o device corretamente com os dados APN da operadora utilizada, como o endereço APN, a usuário e a senha. Usa-se isso na maioria dos celulares quando se configura a conexão. Quando compra-se o celular de alguma operadora, normalmente ele já vem configurado.

Importante: Em conexões TCP e WAP, todo o tráfego não passa pelo BIS ou BES, isso significa que por padrão, não está incluído no pacote BlackBerry Ilimitado. Dessa forma, todo tráfego utilizando essas conexões serãao tarifados à parte. A única operadora que conheço que não cobra pelo tráfego TCP, que já está incluído no serviço BlackBerry Ilimitado, é a Claro, a operadora que eu uso.

Se um celular possui acesso a e-mails, ele deve ter BES ou BIS, mas não poderá ter ambos configurados.

Ordem padrão de escolha de uso da conexão

Se você não especifica o tipo de conexão que deseja usar, o BlackBerry segue o seu padrão de escolha, conforme a ordem abaixo.

Se o celular tiver BES, e não for especificada a conexão desejada, será usada a conexão BES. Se esta estiver indisponível no momento, e Wi-fi estiver disponível, será usada Wi-fi. Se Nem BES nem Wi-fi estiverem disponíveis, será usada TCP, cuja APN deve estar configurada corretamente.

Se o celular tiver BIS, a conexão padrão será sempre Wi-fi se disponível, caso contrário será sempre TCP. Ou seja, BIS nunca é definido como o padrão de conexão.

Que conexão deve-se dar preferência

Conexões diretas TCP são instáveis, e ocorrem muitos problemas de conexão, como “Can’t Open Connection”. Além disso, todo o tráfego que sua aplicação fizer será tarifado à parte.

O browser e o leitor de e-mails de e-mails do device usam BIS ou BES, sempre.

Portanto, o ideal é sempre usar BES ou BIS. Usando essas conexões você terá garantia de que sempre terá uma boa conexão, e de que o tráfego não será tarifado à parte.

BIS, uso restrito à empresas parceiras da Rim

Visto que o serviço BIS é um serviço público de Internet, e todo o tráfego é passado pelos servidores da Rim, ela limita seu uso à aplicações próprias, como navegador e e-mails, e aplicações de seus parceiros, como a Abacomm Brasil aqui no Brasil. Todos os outros desenvolvedores não estão autorizados a usar BIS, apenas BES e outras conexões que não passam pelos servidores Rim.

Os parceiros que precisem usar BIS, devem preencher um formulário contendo muitas informações sobre a aplicação, e se aprovada, a Rim envia as informações que mostram como usar BIS. Os parceiros estão sob uma norma da parceria Rim que garante o sigilo sobre essas informações. Caso compartilhem essas informações, perderão a parceria com a fabricante. É por isso que não se encontra essas informações na Internet.

Por isso, nesse artigo não ensinarei a usar BIS, apenas a configurar sua conexão usando outras conexões.

Configurando uma conexão

Para se configurar uma conexão, e escolher o tipo de conexão, usamos parâmetros no final de todas as URLs, seguinte o modelo:
[PROTOCOLO]://[URL];[CONFIG1];[CONFIG2];[CONFIG3]

Configurando BES

Se sei que o device possui BES, para definir que queremos usar esse transporte em nossas conexões, montamos a URL da seguinte forma, com o parâmetro deviceside=false:

http://www.devmobile.blog.br/consulta?nome=pri&artigo=rim;deviceside=false
http://www.devmobile.blog.br/consulta;deviceside=false

No entanto, caso o celular não tenha BES, ocorrerá um erro de conexão, pois foi definido explicitamente que usaremos BES, mas o device não a possui. Mas vale lembrar que se o device tiver BES, não é necessário especificar que devemos usar BES, pois esse tipo de transporte já será o padrão de conexão. Isso indica que se quisermos usar BES, é melhor nem colocarmos nada na URL, é melhor deixarmos no formato padrão, pois caso o BES não esteja disponível no momento, mas Wi-fi ou TCP estejam, o device usará outra conexão disponível, e não dará o erro de conexão.

Para saber se o device possui o serviço BES ativo no caderno de serviços, basta criar um método semelhante a:

public boolean ifBESActive() {  
	//Somente em JDE 4.2 ou superior
        return CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_MDS));
}

Configurando WAP

Você também pode usar a conexão WAP provida pela própria operadora. Mas WAP não permite push. Nem todas as operadoras possuem conexão WAP. Para se usar WAP numa conexão, é necessário configurar a conexão de acordo com os configurações WAP de cada operadora.

Para definir uma conexão como WAP, é necessário incluir os parâmetros WAPGatewayIP, WapGatewayAPN, WapGatewayPort, TunnelAuthUsername, TunnelAuthPassword, entre outros, no final da sua URL. Por exemplo, uma conexão WAP com a OI ficaria assim:

http://devmobile.blog.br;WAPGatewayIP=200.222.108.241;WapGatewayPort=9203;

WAPGatewayAPN=wapgprs.oi.com.br;TunnelAuthUsername=oiwap;TunnelAuthPassword=oioioi

Os parâmetros são separados por ; e não são permitidos espaços.

Você precisará verificar as configurações WAP com sua operadora, e de acordo com a necessidade, definir os parâmetros:

Parâmetro Descrição Padrão
WapGatewayIP Endereço IP do gateway. OI: 200.222.108.241, Claro: 200.169.126.011, Tim: 200.244.116.65.
WapGatewayAPN Access Point Node (somente para rede GPRS). Oi: wapgprs.oi.com.br, Claro: wap.claro.com.br, Tim: wap.tim.br
WapGatewayPort Porta do gateway. Se for definida a porta 9203, será usado WTLS a menos que WapEnableWTLS=false seja especificado. Oi: 9203, Claro: 9201, Tim: 9201. 9201
WapSourceIP Endereço IP da fonte. 127.0.0.1
WapSourcePort Porta de conexão da fonte. 8205
TunnelAuthUsername Nome de usuário da conexão APN. Oi: oiwap, Claro: claro, Tim: tim.
TunnelAuthPassword Senha da conexão APN. Oi: oioioi, Claro: claro, Tim: tim.
WapEnableWTLS Ativa ou desativa explicitamente a WTLS. Se esse parâmetro não for especificado, WTLS é usado por padrão para conexões na porta 9203

Configurando Wii-Fi

Logicamente, apenas para celulares com suporte a wi-fi. Você precisa definir 2 parâmetros: deviceside e interface. Veja um exemplo de uma URL definida para usar Wi-fi.

http://devmobile.blog.br;deviceside=true;interface=wifi

No entanto, antes de definir uma conexão para usar Wi-fi, deve-se antes verificar se esta a conexão está disponível. Para isso, você poderá criar um método como mostra:

public static boolean isWiFiActive() {
    //Use preferencialmente esta verificação, mas funciona somente para JDE 4.3 ou superior.
    //return WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED;

    //Para JDE menores que 4.3, use:
    return (RadioInfo.getActiveWAFs() & RadioInfo.WAF_WLAN ) != 0;    
}

Configurando Conexão direta TCP APN

Você pode querer usar explicitamente conexões TCP em devices que não possuem serviços BIS ou BES. Para definir explicitamente que uma conexão usará conexão direta do aparelho, TCP, o device deve estar configurado adequadamente. Verifique isso indo em Opções, Configurações Avançadas, TCP. Veja como as configurações devem estar, de acordo com cada operadora:

Claro - APN: claro.com.br - Username: claro - Password: claro

TIM - APN: tim.br - Username: tim - Password: tim

Nas URL em suas aplicações, defina o parâmetro deviceside=true, como o exemplo abaixo:

http://devmobile.blog.br;deviceside=true

Na maioria das operadoras o tráfego por TCP é tarifado à parte do plano BlackBerry ilimitado.

Conclusão

Você pode criar um gerenciador de conexões em sua aplicação, que monte a URL com os devidos parâmetros de acordo com as configurações de conexão.

Espero ter ajudado a entender as particularidades das conexões BlackBerry.

Boas aplicações!



Sobre o Autor

Este artigo foi escrito por Nelson Pereira Junior.
Nelson é desenvolvedor há 12 anos. Hoje desenvolve aplicações Web e Móveis na Abacomm Brasil cuidando do desenvolvimento server-side J2EE, banco de dados, design de aplicações móveis, e desenvolvimento móvel usando várias plataformas como BlackBerry, J2ME, FlashLite, Android, etc. Para conversar com o autor use o e-mail, MSN e GTalk npereirajr@gmail.com.



Receba artigos em seu e-mail

Receba os novos artigos do blog em seu e-mail. E-Mail:



2 Comentários

  1. João Galli:

    Olá Nelson, muito obrigado pelas informações sobre wifi, comprei um 8320 para facilitar meu desenvolvimento no dia-a-dia e tornar os testes mais rápidos, só que não conseguia efetuar conexões via WIFI. Ainda não testei, mas agradeço mesmo assim.

  2. Ruddy:

    Nelson, muito boa a explicação.

Deixe um comentário

blogarama.com Globe of Blogs EatonWeb Blog Directory