Standardowy sposób wykrywania przeglądarek mobilnych w aplikacji webowej na podstawie żądania http

Zaczynamy iść w dół ścieżką obsługi przeglądarki mobilnej dla enterprise e-commerce webapp (Java/Servlet based). Oczywiście istnieje wiele decyzji do podjęcia, ale wydaje mi się, że podstawą jest możliwość niezawodnego wykrywania przeglądarek mobilnych i podejmowania decyzji o treści, które mają być odpowiednio zwracane. Czy istnieje standardowy sposób dokonania tego ustalenia (szybko) w oparciu o żądanie http i najlepiej zebrać więcej informacji o danej przeglądarce i urządzeniu dokonującym żądanie (rozmiar ekranu, możliwości html, itp?).

Byłbym również wdzięczny za wszelkie dodatkowe informacje, które byłyby przydatne od kogoś, kto poszedł w dół tej ścieżki podejmowania istniejącej dużej skali korporacyjnej webapp i architekt-ING się wsparcie przeglądarki mobilnej od strony rozwoju.

[edytuj] z pewnością rozumiem, że nagłówek request i informacje o bazie standardowych agentów użytkowników są bardzo pomocne. Dla tych, którzy mówią o' innych ' właściwościach nagłówka żądania, jeśli możesz dołączyć podobną znormalizowaną nazwę / zasób wartości, która byłaby bardzo pomocna.

[edytuj] kilku użytkowników zaproponowało rozwiązania polegające na wywołaniu przez przewód jakiegoś serwisu internetowego, który wykona detekcję. Chociaż jestem pewien, że to działa, nie jest to dobre rozwiązanie dla witryny e-commerce dla przedsiębiorstw z dwóch powodów: 1) Szybkość. Wywołanie przez przewód dla każdego żądania strony trzeciej miałoby ogromne konsekwencje dla wydajności. 2) zależności / prawne. Zwiążemy naszą stronę czas reakcji i kluczowa funkcjonalność ich usługi, co jest straszne ze względów prawnych i ryzyka.

Author: Peter, 2008-09-27

19 answers

Czy standardowym sposobem nie jest sprawdzenie agenta użytkownika? Oto baza agentów użytkowników , której możesz użyć do wykrywania przeglądarek mobilnych.

 42
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 22:07:07

@ David ' s answer wymienione przy użyciu WURFL -- co jest prawdopodobnie najlepszym rozwiązaniem. Pamiętaj jednak, że wskaźnik sukcesu wynosi zwykle około 60% (Z doświadczenia mojego i innych). Z przewoźnikami stale zmieniającymi UA i ilością profili urządzeń, które istnieją (60,000+ ?), nie ma kuloodpornego sposobu, aby uzyskać wszystkie odpowiednie dane, które chcesz.

Tylko małe ostrzeżenie przed poleganiem w dużym stopniu na dB urządzenia. Starałbym się, aby Opcje użytkownika były otwarte, pozwalając mu na zmianę sesji opcje na wypadek, gdybym się pomylił.

 20
Author: jmccartie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-16 16:19:00

Możesz użyć Modernizator Aby wykryć możliwości przeglądarki

 8
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-03 00:13:22

Chociaż można wykryć przeglądarkę mobilną za pomocą agenta użytkownika, wojna przeglądarek na platformie PC pokazała, że wąchanie agentów użytkowników nie jest tak dobrą rzeczą.

Najlepiej jest zastosować określone style w oparciu o Typ nośnika lub wysłać inną odpowiedź w oparciu o nagłówek inny niż user agent - taki jak nagłówek Accept, który mówi, jaki rodzaj treści preferuje przeglądarka.

W tej chwili może wystarczyć kod witrynę, która działa z iPhone i Opera poprzez przeglądarkę sniffing-ale Googles Android nadchodzi teraz minutę i istnieje wiele innych telefonów komórkowych, które będą miały funkcjonalność przeglądarki blisko iPhone ' a w niedalekiej przyszłości i byłoby to strata do opracowania mobilnej strony internetowej, która nie obsługuje tych urządzeń tak dobrze, jak possibel od podstaw.

 6
Author: VoxPelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 08:43:49

Po dniach poszukiwań właściwego sposobu wykrywania urządzenia mobilnego postanowiłem zachować to proste [głupie ] i umieszczę przycisk "Strona urządzenia mobilnego" na mojej stronie indeksu.... to tylko jedno kliknięcie!!

 5
Author: Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-25 11:56:40

Ten artykuł (i jego kontynuacja ) wydaje się ładny.

 4
Author: Milen A. Radev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 22:11:22

Detect Mobile Browsers - fragmenty w różnych językach programowania.

 4
Author: ripper234,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-31 09:13:57

Następująca, lekka konfiguracja Apache robi całkiem dobrą robotę i zapamiętuje preferencje użytkowników, jeśli preferują wersję na 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>

Więcej informacji na ten temat @ http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

 3
Author: ian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-02 23:33:55

Proponuję darmowy system wykrywania oparty na uaprof i user agent: http://www.mobilemultimedia.be UAprof powinien być głównym kluczem do wykrywania, gdy jest dostępny, ponieważ zwykle istnieje wiele agentów Użytkownika dla tego samego uaprof. Jeśli chcesz zarządzać tym samodzielnie, powinieneś wybrać Wurfl, ponieważ możesz pobrać całą bazę danych i samodzielnie zarządzać nią lokalnie.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-30 11:33:38

Kiedy ostatnio miałem podobną potrzebę, znalazłem ten kod , który używa HTTP_X_WAP_PROFILE, HTTP_ACCEPT, i HTTP_USER_AGENT aby zidentyfikować przeglądarkę jako mobilną lub nie-mobilną. Jest to PHP, ale można go dość łatwo przekonwertować na cokolwiek potrzebujesz(zaimplementowałem go w VBScript dla klasycznej ASP).

Jak na ironię, okazało się, że nie skończyłem używać kodu, ponieważ zdecydowaliśmy się podać konkretne adresy URL dla użytkowników mobilnych i nie-mobilnych, ale na pewno zadziałało, gdy go testowałem ...

 2
Author: Dave DuPlantis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-12 15:50:01

Otrzymasz większość informacji, takich jak przeglądarka, urządzenie, akceptowane języki, akceptowane formaty itp. z nagłówka żądania. Agent użytkownika, o którym mowa powyżej, jest częścią nagłówka żądania.

 1
Author: Vijesh VP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 22:12:18

OK, tu jest bardzo prosta odpowiedź - może pozwolimy użytkownikowi zdecydować? po zalogowaniu się do ap podaj link do strony mobilnej. na stronie mobilnej podaj link "powrót do strony głównej" - spróbuj www.fazolis.com na urządzeniu mobilnym-robią dobrą robotę.

Następnie, w linku do strony mobilnej ze strony przeglądarki, zarejestrować swój "głos" i swojego agenta użytkownika. Możesz zbudować własną wiarygodną listę swoich klientów, którzy chcą witryny mobilnej. Użyj tego specyfikacje dotyczące rozmiaru ekranu dla tych urządzeń mobilnych i możesz zbudować całkiem dobrą logikę, aby zapewnić satysfakcjonujące wrażenia użytkownika. Nigdy nie wysłałbym do źródła sieciowego czegoś tak elementarnego jak to.

Oh I na Twojej "mobilnej stronie" - jeśli piszesz swój ap semantycznie dobrze, to powinieneś być w stanie zaprezentować jedną stronę zarówno dla mobilnej, jak i przeglądarki zamiast konieczności pisania dwóch oddzielnych zestawów stron. Po prostu coś do przemyślenia-to jest warte dodatkowej myśli i wysiłku, aby zaoszczędzić czas później.

 1
Author: Samuel Fullman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-24 23:18:47

Nie widzę go tutaj zamieszczonego, ale inną opcją, nad którą obecnie się zastanawiam, jest www.detectmobilebrowser.com

 1
Author: rrrr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 13:48:11

Najprostszym sposobem jest utworzenie tablicy ze zwykłymi znacznikami powiązanymi z przeglądarkami mobilnymi. Przynajmniej większość agentów użytkowników mobilnych musi mieć słowo mobile, mini, nokia, java ME, android, iphone, mobile OS itp. Jeśli dowolny jest dopasowany do agenta użytkownika, używając strpos php, wydrukuj przycisk mobilny na górze strony. Pozostaw użytkownikowi wybór. Uwielbiam pełną witrynę, ponieważ moja mobilna przeglądarka daje mi to samo doświadczenie, z wyjątkiem tego, że muszę powiększać lub przewijać większość razy.

 1
Author: 9jabooks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-29 13:57:45

Będziesz musiał sprawdzić ciąg agenta użytkownika z wcześniej zdefiniowaną listą, Jak Ta

 0
Author: hayalci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 22:11:12

Możesz użyć webservice do wykrywania mobilnego przeglądania jak handsetdetection.com.

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-16 23:57:41

Faktem jest, że samo poleganie na useragent nie jest wystarczająco dobre, aby wykryć przeglądarki mobilne.

Jasne, lata temu można było szukać w nim pewnych ciągów i zgadywać, że to była Nokia, czy coś takiego, ale teraz jest tak wiele telefonów, i tak wiele, które udają rzeczy, że nie są, że potrzebne jest coś bardziej wyrafinowanego.

Znalazłem świetną stronę w link text, który jest oparty na tym samym rozwiązaniu, które MTV używa dla wszystkich swoich mobilnych stron internetowych. On Naprawdę dobre, ponieważ ma niezależny od urządzenia język znaczników, ale co ważniejsze, oferują wywołanie webservice dla isMobileDevice ().

Po prostu zajrzyj do instrukcji "Jak to działa".

Używam go do witryn moich klientów i nie znalazłem jeszcze przeglądarki mobilnej, której nie wykrywa dokładnie. Całkowicie oślepiające!

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-15 16:17:39

Po prostu natknąłem się na urządzenie i wykrywanie funkcji w mobilnej sieci z tymi treściami:

    Korzystanie z detekcji urządzeń i funkcji w celu poprawy komfortu korzystania z mobilnej sieci]}
  1. Wprowadzenie do wykrywania urządzeń
  2. podejścia do projektowania stron mobilnych
    1. nic nie rób
    2. zapewnienie ogólnej strony mobilnej
    3. Projektowanie z myślą o mobilnych i adaptacyjnych
  3. strategie adaptacji treści i grupowania urządzeń
    1. UrzÄ…dzenie grupowanie
    2. adaptacja treści
  4. ]}
  5. wspólne podejścia do wykrywania urządzeń
    1. adaptacja po stronie serwera
    2. adaptacja po stronie klienta
    3. Server-side User Agent (UA) i header lookup
    4. łańcuch UA po stronie serwera połączony z wyszukiwaniem bazy danych urządzeń
    5. wykrywanie profili agenta użytkownika po stronie serwera (uaprof)
    6. wykrywanie w oparciu o technologiÄ™ JavaScript
    7. CSS media typy
    8. CSS media queries
  6. dodatkowe najlepsze praktyki
    1. przekierowanie + ręczny link
    2. Landing page + manual link
  7. Przykładowa Strona do pobrania
 0
Author: Kevin Hakanson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-14 22:03:46

Możesz użyć interfejsów API WURFL do wykrywania typu urządzenia

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

Lub Modernizer do wykrywania możliwości przeglądarki

 0
Author: Prathamesh Rasam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 08:15:55