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
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.

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.
13 Abril 2008, 2:56 pmRuddy:
Nelson, muito boa a explicação.
26 Janeiro 2010, 6:49 pm