forma padrão para detectar navegadores móveis em uma aplicação web com base na solicitação http

StackOverflow https://stackoverflow.com/questions/142273

Pergunta

Estamos começando a percorrer o caminho do suporte ao navegador móvel para um webapp empresa de e-commerce (Java / Servlet base). Claro que há muitas decisões a serem feitas, mas parece-me a pedra angular é para ser capaz de detectar com segurança navegadores móveis, e tomar decisões sobre o conteúdo a ser devolvido em conformidade. Existe uma maneira padrão para fazer essa determinação (rapidamente) com base na solicitação http e, idealmente recolher mais informações sobre o navegador dado e dispositivo que faz o pedido (tamanho da tela, html capacidades, etc?).

Eu também gostaria de receber qualquer informação suplementar que seria de uso de alguém que tenha ido por esse caminho de tomar um webapp empresa de grande escala existente e suporte ao navegador móvel out-ing arquiteto do lado do desenvolvimento.

[editar] Eu certamente entender o cabeçalho de solicitação e as informações sobre um banco de dados de agentes de usuário padrão é uma grande ajuda. Para aqueles falando sobre 'outros' propriedades pedido de cabeçalho, se você poderia incluir semelhante padronizado nome / recurso de valores que seria uma grande ajuda.

[editar] Vários usuários propuseram soluções que envolvem uma chamada sobre o fio para algum serviço web que vai fazer a detecção. Enquanto eu tenho certeza que isso funciona, não é uma boa solução para um site de e-commerce da empresa por duas razões: 1) velocidade. Uma chamada sobre o fio para cada solicitação de página para um terceiro teria enormes implicações de desempenho. 2) a dependência / legal. Nós amarrar o nosso tempo de resposta do site e funcionalidade chave para o seu serviço, o que é horrível por razões legais e de risco.

Foi útil?

Solução

Não seria a maneira padrão a de verificar o agente de usuário? Aqui está um banco de dados de agentes de usuário você pode usar para detectar navegadores móveis.

Outras dicas

@ resposta de David mencionou usando WURFL - que é provavelmente sua melhor opção. Esteja avisado, no entanto, a taxa de sucesso é geralmente em torno de 60% (de mina e experiência do outro). Com portadores mudando UA de constantemente e a quantidade de perfis de dispositivos que existem (mais de 60.000?), Não há nenhuma maneira à prova de balas para obter todos os dados corretos que você deseja.

Apenas um pouco de aviso antes de confiar pesadamente em um dispositivo DB. Gostaria de tentar manter as opções do usuário abrir, permitindo-lhes opções de sessão de mudança no caso de eu ter adivinhado errado.

Você pode usar modernizador para detectar capacidades do navegador

Enquanto você poderia detectar um navegador móvel através da sua agente do usuário a guerra dos navegadores na plataforma PC tem mostrado que sniffing os agentes do utilizador não é realmente uma coisa boa para fazer.

O que idealmente deve ser feito é que os estilos específicos devem ser aplicados com base no tipo de mídia ou que uma resposta diferente deve ser enviado com base em um cabeçalho que não seja o agente do usuário - como o cabeçalho Accept que diz que tipo de conteúdo que o browser prefere.

Agora que poderia ser o suficiente para código de um site que funciona com o iPhone e com o Opera através do browser sniffing - mas Googles Android está chegando a qualquer minuto e há muitos outros telefones móveis que terão a funcionalidade do navegador perto no iPhone futuro próximo e seria um desperdício para desenvolver um site móvel que não apoiar esses dispositivos tão bom quanto possibel a partir do zero.

Depois de dias de procurar o caminho certo de detectar um dispositivo móvel Eu decidi mantê-lo simples [estúpido] e irei colocar um botão 'local dispositivo móvel' na minha página índice .... é apenas um clique longe !!

Este artigo (e sua de acompanhamento) parece bom.

Detectar navegadores móveis -. Snippets em várias linguagens de programação

A seguinte configuração Apache peso leve faz um trabalho muito bom e se lembra de preferência do usuário se eles preferem a versão PC

<VirtualHost (your-address-binding)>   

  (your-virtual-host-configuration)       

  RewriteEngine On     
  RewriteCond %{QUERY_STRING} !ui=pc
  RewriteCond %{HTTP_COOKIE} !ui=pc
  RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR]

  RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 

  RewriteRule /(.*) http://bemoko.com/$1 [L]

  RewriteCond %{QUERY_STRING} "ui=pc"
  RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
  RewriteCond %{QUERY_STRING} "ui=default"
  RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
</VirtualHost>

Mais do fundo nesta @ http://bemoko.com /training.team/help/team/pc-to-mobile-redirect

proponho um sistema de detecção livre que se baseia na UAProf e agente de usuário: http://www.mobilemultimedia.be UAProf deve ser a chave primária para a detecção quando é disponível como geralmente há vários agentes de usuário para o mesmo UAProf. Se você deseja gerenciar isso por conta própria, então você deve ir para WURFL porque você pode baixar todo o banco de dados e gerenciá-lo localmente por si mesmo.

Quando eu tinha uma necessidade semelhante recentemente, descobri este código que usos HTTP_X_WAP_PROFILE, HTTP_ACCEPT e HTTP_USER_AGENT para identificar um navegador como móvel ou não móvel. É PHP, mas poderia ser convertido facilmente para o que você precisa (I implementou em VBScript para ASP clássico).

Ironicamente, descobriu-se que eu não acabam usando o código porque decidimos para fornecer URLs específicas para usuários móveis e não móveis, mas certamente funcionou quando eu estava testando-o ...

Você vai ter a maioria das informações, como navegador, dispositivo, línguas aceites, formatos aceitos etc a partir do cabeçalho do pedido. O agente de utilizador mencionado acima faz parte do cabeçalho do pedido.

OK, aqui é uma resposta muito simples - como sobre permitindo que o usuário decidir? sobre o seu login para o seu ap, fornecer um link para o site móvel. no site móvel, fornecer um link "de volta para o site principal" - tente www.fazolis.com em seu dispositivo móvel - eles fazem um bom trabalho desta .

Em seguida, no link para o site móvel a partir do site do navegador, cadastre-se seu "voto" e seu agente usuário. Você pode construir sua própria lista confiável de Seu clientes que querem o site móvel. Utilize este casado com especificações sobre o tamanho da tela para estes dispositivos móveis, e você pode construir alguma lógica bastante bom para uma experiência de usuário satisfatória. Eu nunca ia postar para uma fonte de rede para algo tão elementar como este.

Oh e no seu "site móvel" - se você escrever o seu ap semanticamente bem, então você deve ser capaz de apresentar um único site para ambos vs. móvel e navegador ter que escrever dois conjuntos de páginas separadas. Apenas algo para se pensar -. Isso vale a pena o pensamento e esforço extra para poupar tempo depois

Eu não posso vê-lo publicado aqui, mas outra opção que eu estou olhando para, atualmente, é www.detectmobilebrowser.com

A maneira mais fácil é criar uma matriz com marcas regulares associados com navegadores móveis. Na agentes de usuário menos mais móveis devem ter a palavra móvel, mini, nokia, Java ME, Android, iPhone OS móvel, etc. Se algum está combinado com o agente do usuário, usando strpos php, imprimir um botão móvel no topo da página . Deixar o usuário escolher. Eu amo site completo cos meu navegador móvel dá-me a mesma experiência, exceto que eu preciso para fazer zoom ou rolar na maioria das vezes.

Você tem que verificar a seqüência do agente do usuário com uma lista previamente definida, como este um

Você pode usar um webservice para detectar a navegação móvel como handsetdetection.com.

O fato é que apenas contando com o useragent não é bom o suficiente para detectar navegadores móveis.

Claro que, anos atrás, você poderia procurá-la para determinadas cordas e acho que era um Nokia ou algo assim, mas agora há tantos telefones lá fora, e assim por muitos que pretendem ser as coisas que eles não são que algo mais sofisticado é necessário.

Eu encontrei um grande site em link de texto que se baseia a mesma solução que o uso MTV por todo o seu web móvel locais. Ele é realmente bom, pois tem uma linguagem de marcação independente do dispositivo, mas mais importante é que eles oferecem uma chamada webservice para isMobileDevice ().

Apenas olhar no manual, em seguida, 'como funciona'.

Eu tenho usado isso para meus sites clientes e ainda têm de encontrar um navegador móvel que não detectar com precisão. Totalmente cega!

Apenas correu detecção de dispositivos e funcionalidade na web móvel com estes conteúdo:

  1. Usando o dispositivo e detecção de recursos para melhorar a experiência do usuário na web móvel
  2. Introdução ao dispositivo de detecção
  3. As abordagens para o design do site móvel
    1. Do nada
    2. Fornecer um site móvel genérico
    3. Designing com móveis e adaptação em mente
  4. adaptação de conteúdo e estratégias de dispositivos de agrupamento
    1. Dispositivo de agrupamento
    2. adaptação de conteúdo
  5. Minimizando a necessidade de adaptação em primeiro lugar
  6. Common abordagens para a detecção de dispositivos
    1. adaptação lado do servidor
    2. adaptação do lado do cliente
    3. Agente do lado do servidor do usuário (UA) e cabeçalho de pesquisa
    4. do lado do servidor seqüência de UA combinado com banco de dados dispositivo de pesquisa
    5. do lado do servidor User Agent Perfis (UAProf) de detecção
    6. A detecção baseada em tecnologia JavaScript
    7. tipos
    8. mídia CSS
    9. consultas
    10. mídia CSS
  7. melhores práticas adicionais
    1. redirecionamento + ligação Manual
    2. Landing page + ligação Manual
  8. página exemplo para download

Você pode usar APIs WURFL para detectar tipo de dispositivo

http://wurfl.sourceforge.net/wurfl_schema.php

ou modernizador para detectar capacidades do navegador

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top