Eu tenho uma codificação especial que só funciona para navegadores HTML5 (coisas simples de geolocalização). Desejo redirecionar os usuários do iPhone e Android para a versão m.example.com do meu site. Como é a melhor maneira de fazer isso?
Eu tenho uma codificação especial que só funciona para navegadores HTML5 (coisas simples de geolocalização). Desejo redirecionar os usuários do iPhone e Android para a versão m.example.com do meu site. Como é a melhor maneira de fazer isso?
Respostas:
você pode usar a detecção do UserAgent ou o jQuery.support (). Como você procura funcionalidade específica, pode combinar os dois para obter o que deseja.
O UserAgent pode realmente ser sua melhor aposta. Faça isso com um arquivo .htaccess para reduzir as solicitações HTTP e, possivelmente, exibir o site principal antes do redirecionamento no caso de conexão lenta ou desempenho lento do javascript.
Você pode ver a lista (na maioria) exaustiva de agentes de usuários móveis na página da wikipedia . Como você pode ver, existem semelhanças entre fabricantes e versões que você poderia procurar em uma expressão regular.
Sua pergunta toca em duas partes. Redirecionamento e compatibilidade html5.
Redirecionamento
Estou usando o seguinte .htaccess:
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone|android" [NC]
RewriteRule ^(.*)$ http://m.example.com/ [L,R=302]
Para php, você pode usar esta biblioteca: http://detectmobilebrowsers.mobi/ ... mas eu sugiro usar o htaccess para tempo e segurança de processamento.
Você pode encontrar alguns exemplos adicionais aqui
http://ohryan.ca/blog/2009/02/18/revisiting-mobile-redirection-using-htaccess-rewrite-rules/
Recursos do navegador
Como meu telefone Android não tem problemas com o html5 com código de geolocalização. Você pode considerar usar a Biblioteca Javascript Modernizr para detectar os recursos do navegador do cliente que visita sua página.
O excelente modelo padrão do HTML5 está usando o modernizr pronto para suportar esse tipo de necessidade.
Minha opinião é: sugiro usar o método htaccess para tudo, exceto telefones e navegadores recentes suportados pelo modernizr, e permitir que usuários do Android e iPhone sejam verificados pelo Modernizr quanto ao suporte a recursos html5 e redirecione o "resto" da sua versão "sem geolocalização".
Exemplo Modernizr:
if (Modernizr.geolocation) {
// do stuff
}else{
// propose mobile version
}
Espero que isto ajude
Se você estiver codificando com PHP, poderá $_SERVER['HTTP_USER_AGENT']
verificar o cabeçalho do UserAgent, que é enviado quase por qualquer dispositivo móvel importante para o script PHP. Em seguida, basta comparar o valor desse cabeçalho com substr
a função com o que ele precisa ter dentro.
Por exemplo, os dispositivos Apple sempre terão sub-strings 'iphone' ou 'ipad'; Os dispositivos Android sempre terão 'android'. Quase todos os dispositivos móveis terão uma sub-string 'móvel' listada neste cabeçalho.