2015-09-16 10 views
6

Chcę wiedzieć, czy moje użytkowników przegląda stronę w mojej aplikacji szyn zSprawdź typ urządzenia poprzez user_agent (szyny)

  • tabletki lub
  • urządzeń przenośnych lub
  • komputer stacjonarny

Przeszukałem wiele różnych rozwiązań. Oto moje ulubione:

  1. UA-parser gem: https://github.com/ua-parser/uap-ruby który wydaje się być bardzo czyste, ale niestety zawsze działki Other kiedy używam parsed_string.device - można wykryć systemu operacyjnego i przeglądarki z nim bardzo dobrze.
  2. pisanie od podstaw

piśmie od zera skończyło się czegoś takiego:

if request.user_agent.downcase.match(/mobile|android|iphone|blackberry|iemobile|kindle/) 
    @os = "mobile" 
elsif request.user_agent.downcase.match(/ipad/) 
    @os = "tablet" 
elsif request.user_agent.downcase.match(/mac OS|windows/) 
    @os = "desktop" 
end 

Jednak to, co Tęsknię jest kompletna dokumentacja definicji agenta użytkownika „Urządzenie”.

Na przykład: Jakie wzorce muszę sprawdzić, jeśli mój użytkownik przegląda tablet/urządzenie mobilne lub komputer? Nie mogę po prostu zgadnąć i sprawdzić, np. regex ua-parser też mi nie pomaga (bardzo skomplikowany): https://github.com/tobie/ua-parser/blob/master/regexes.yaml

Czy istnieje jakieś proste rozwiązanie mojego problemu? W jaki sposób Google Analytics to robi? Próbowałem zbadać, ale nie mogłem go znaleźć. Wyświetlają też urządzenia (komputery/tablety/urządzenia mobilne).

+0

spróbować [przeglądarki] (https://github.com/fnando/browser) spróbować. Jest lepszy niż "ua-parser" pod wieloma względami – usmanali

+0

który wygląda obiecująco, dziękuję – DonMB

Odpowiedz

0

szukam zrobić 2nd opcja, bo muszę go jako chude-n-średnie, jak to możliwe. W łańcuchu User-Agent jest dużo informacji, których po prostu nie potrzebuję. I nie chcę funkcji, która próbuje wszystko przetworzyć. Po prostu: bot, komputer stacjonarny, tablet, telefon komórkowy i inne.

Jest dużo do przeczytania, ale szukam słów kluczowych przy użyciu this extensive list.

Do tej pory następujące słowa kluczowe wydają się działać dla mnie. To regularne wyrażenia w php, ale wpadniesz na pomysł.

//try to find crawlers 
// https://developers.whatismybrowser.com/useragents/explore/software_type_specific/crawler/ 
if (preg_match('/(bot\/|spider|crawler|slurp|pinterest|favicon)/i', $userAgent) === 1) 
    return ['type' => 'crawler']; 

//try to find tablets 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/tablet/ 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/ebook-reader/ 
if (preg_match('/(ipad| sm-t| gt-p| gt-n|wt19m-fi|nexus 7| silk\/|kindle| nook)/i', $userAgent) === 1) 
    return ['type' => 'tablet']; 

//try to find mobiles 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/mobile/ 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/phone/ 
if (preg_match('/(android|iphone|mobile|opera mini|windows phone|blackberry|netfront)/i', $userAgent) === 1) 
    return ['type' => 'mobile']; 

//try to find desktops 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/computer/ 
if (preg_match('/(windows nt|macintosh|x11; linux|linux x86)/i', $userAgent) === 1) 
    return ['type' => 'desktop']; 

return ['type' => 'other']; 
Powiązane problemy