Como utilizar a versão 0.2 da classe IsMobile 23 / janeiro / 2010
A classe IsMobile, que tem como objetivo identificar se o usuário está acessando a sua aplicação web de um dispositivo móvel, chegou na sua versão 0.2, tentando manter a simplicidade, pouco código e o mais didático possível, para os programadores aprenderem como resolver o problema da identificação de mobile devices e poderem contribuir ou desenvolver a sua própria solução.
Antes, vamos ao changelog dessa versão:
# bug:
- Array de dispositivos não estava sendo inicializado caso o usuário não definisse outros dispositivos e a configuração não tivesse sido incluída.
# mudanças:
- Retirada a opção de log
- Removido o suporte a antiga lib php do projeto WURFL
- Removido o arquivo de configuração, não precisamos mais dele.
# novidades:
- Inserido o Android na lista de mobiles device
- Nova forma de gerar log, agora implementamos uma interface, para deixar mais flexivel para o programador.
- Melhoramos o arquivo ismobile_examples.php
Vamos começar falando sobre as mudanças, a opção de log foi reescrita, então não tem por que deixar a antiga, nem pra compatibilidade pois se tratava apenas de um método na classe que você pode continuar usando se quiser, não vai afetar o restante da classe. Sobre a remoção da antiga lib php do projeto WURLF foi por que foi lançada uma nova API, muito melhor que antiga, toda orientada a objeto e etc, fica melhor utilizar ela caso precise de algo com mais detalhes.
O arquivo de configuração… bom, ele não é mais necessário
Agora vou mostrar aqui o código do arquivo ismobile_examples.php que vem no pacote do projeto, vou tentar explicar melhor para ajudar quem está começando.
Exemplo básico para identificação do dispositivo móvel
1 2 3 4 5 6 7 8 9 10 11 12 | require_once "ismobile.class.php"; // inclua a classe $ismobi = new IsMobile(); // instancie o objeto if($ismobi->CheckMobile()) // utilize o método CheckMobile para verificar, ele retorna TRUE ou FALSE { echo 'O seu dispositivo móvel é ' . $ismobi->GetMobileDevice() . '? '; } else { echo "Você não está usando em dispositivo móvel"; } |
O próximo bloco de código faz um teste com USER_AGENTS dos principais celulares do mercado (Nokia, Blackberry, Iphone e Android)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | require_once "ismobile.class.php"; $agents_test = array("Nokia6600/1.0 (4.09.1) SymbianOS/7.0s Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0", "BlackBerry8330/4.3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105", "Opera/8.01 (J2ME/MIDP; Opera Mini/3.0.6306/1528; en; U; ssr)", "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3", "Mozilla/5.0 (Linux; U; Android 1.6; en-it; HTC_TATTOO_A3288 Build/DRC79) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"); $ismobiuser = new isMobile($agents_test[rand(0,5)]); if ($ismobiuser->CheckMobile()) { $mobileDevice = $ismobiuser -> GetMobileDevice(); echo 'User Agent: ' . $ismobiuser -> GetUserAgent(); echo ' '; echo 'Mobile Device: ' . $mobileDevice; } |
A maior mudança foi a troca da maneira de como gerar log, criamos uma classe interface (IsMobileLogger) para que você possa implementar a sua rotina, aumentando a flexibilidade na utilização da classe IsMobile e adicionamos o arquivo ismobile_example_log.php mostrando como fazer, segue o exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | require_once "ismobile.class.php"; class DataBase implements IsMobileLogger { public function log($msg) { $c = mysql_connect('localhost', 'root', 'porkaria'); if (mysql_select_db('test', $c)) { if (mysql_query("INSERT INTO ismobile_log VALUES('', '$msg')")) { return true; } else { exit(mysql_error()); } } else { exit('Database Error..'); } } } $log = new DataBase(); $ismob = new IsMobile(false, false, $log); if ($ismob->CheckMobile()) { echo 'Logging... Mobile Device... =] '; } else { echo 'Not logging..'; } |
Para baixar a versão 0.2 da IsMobile é só ir sessão ferramentas do site.
Já estou pensando em novidades para a próxima versão, como dar outras opções de lista de dispositivos móveis, hoje é configurado por um array, quem sabe adicionar um arquivo externo, acesso a alguma tabela na base…
Quem tiver mais idéias para a nova versão, comenta aí ou então entre em contato pela lista do grupo.
awei!


Leave a Reply