Przeprowadziłem badania i pytanie to pojawiło się, ale nie w sposób, w jaki zamierzam. Tworzę stronę dla klienta, która jest kodem docelowym QR, który jest miejscem do pobrania aplikacji. Więc nie musi drukować 2 kodów QR na stronie, chciałbym wykryć bieżący system operacyjny (Apple / Android / Inne [nieobsługiwany]) i zmodyfikować moje elementy na podstawie tej wartości.
Przejrzałem skrypt „DetectMobilebrowsers” i ma on na celu jedynie stwierdzenie, czy użytkownik jest w ogóle mobilny, podczas gdy chciałbym dowiedzieć się, z jakiego systemu operacyjnego korzysta użytkownik, i zaproponować najlepszą wersję aplikacji.
Inne odpowiedzi, które uznałem za podobne do tego pytania, wydawały się albo nieaktualne, albo niewiarygodne (nie można ich wykryć w przeglądarkach tabletów z Androidem), więc szukam czegoś nowego. Jak mogę to osiągnąć? (Najlepiej używając jQuery - JavaScript - PHP w tej kolejności).
źródło
if( /Android/i.test(navigator.userAgent) ) { // some code.. }
zwrócą prawdę tylko dla aplikacji klienckich na Androida.Odpowiedzi:
Możesz przetestować ciąg agenta użytkownika:
źródło
else if (userAgent.match(/Windows Phone/i)) { return 'WindowsPhone'; }
przed Androidem jeszcze, jeśli mam wykryć Windows Phone. Jak dotąd wydaje się, że działa dobrze.iOS
musimy również zweryfikować,!window.MSStream
aby uniknąć liczenia IE11 jakoiOS
;-)Rozwiązanie 1: Sniffing agenta użytkownika
Na Androida i iPhone'a:
Jeśli chcesz wykryć wszystkie urządzenia mobilne, w tym BlackBerry i Windows Phone, możesz skorzystać z tej kompleksowej wersji:
Minusy : ciągi agenta użytkownika zmieniają się i są aktualizowane wraz z pojawieniem się nowych telefonów i marek z dnia na dzień. Musisz więc aktualizować tę listę, jeśli chcesz obsługiwać wszystkie urządzenia mobilne.
Rozwiązanie 2: mobilne wykrywanie biblioteki JS
Aby to zrobić, możesz użyć biblioteki JS do wykrywania urządzeń mobilnych .
Wady : te funkcje wykrywania urządzeń oparte na JavaScript mogą działać TYLKO dla smartfonów najnowszej generacji, takich jak urządzenia iPhone, Android i Palm WebOS. Te funkcje wykrywania urządzeń NIE mogą działać w przypadku starszych smartfonów, które miały słabą obsługę JavaScript, w tym starszych urządzeń BlackBerry, PalmOS i Windows Mobile.
źródło
Za pomocą navigator.platform można uzyskać system operacyjny, na którym zainstalowana jest przeglądarka.
źródło
Ten problem został już rozwiązany tutaj: Jaki jest najlepszy sposób na wykrycie urządzenia mobilnego w jQuery? .
Po zaakceptowaniu odpowiedzi w zasadzie sprawdzają, czy jest to iPhone, iPod, urządzenie z Androidem lub cokolwiek, aby zwrócić wartość true. Po prostu zachowaj te, które chcesz na przykład
if( /Android/i.test(navigator.userAgent) ) { // some code.. }
zwrócą prawdę tylko dla aplikacji klienckich na Androida.Jednak programy klienckie nie są tak naprawdę niezawodne, ponieważ można je zmienić. Najlepszym rozwiązaniem jest opracowanie uniwersalnego rozwiązania dla wszystkich platform mobilnych.
źródło
Możesz to również osiągnąć za pomocą agenta użytkownika na php:
}
źródło
Jeśli używasz React Js na swojej stronie, użyj https://www.npmjs.com/package/react-device-detect
źródło
Możesz także tworzyć linki dynamiczne Firbase które będą działać zgodnie z wymaganiami. Obsługuje wiele platform. Link ten można utworzyć zarówno ręcznie, jak i poprzez programowanie. Następnie możesz osadzić ten link w kodzie QR.
Jeśli aplikacja docelowa jest zainstalowana, link przekieruje użytkownika do aplikacji. Jeśli nie zostanie zainstalowany, przekieruje do Sklepu Play / App Store / Dowolnej innej skonfigurowanej witryny.
źródło
Do tego i innych rodzajów wykrywania klientów sugeruję bibliotekę js: http://hictech.github.io/navJs/tester/index.html
W celu uzyskania konkretnej odpowiedzi użyj:
źródło
Za pomocą wtyczki urządzenia cordova można wykryć
będzie „Android” dla Androida i „Windows” dla systemu Windows. Działa na urządzeniu i podczas symulacji w przeglądarce. Oto toast, który wyświetli wartości urządzenia:
źródło