Что такое строка пользовательского агента iOS 5.0?

91

Что такое строка пользовательского агента iOS 5.0 ?

Вот пользовательский агент iOS 4.0 : Что такое пользовательский агент iPhone 4?

Chown
источник
2
В этом SO-ответе вы можете найти общее регулярное выражение, чтобы проверить, является ли данная строка пользовательского агента строкой iOS 5.0 .
Стефан

Ответы:

151

iPhone:

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

iPad:

Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Chown
источник
3
Верный. С моего iPhone: Mozilla / 5.0 (iPhone; CPU iPhone OS 5_0, например Mac OS X) AppleWebKit / 534.46 (KHTML, как Gecko) Версия / 5.1 Mobile / 9A334 Safari / 7534.48.3
Бен
11

На этом сайте есть полный список, который все еще поддерживается

iPhone, iPod Touch и iPad с iOS 2.0 - 5.1.1 (на сегодняшний день).

Вам действительно нужно собрать полную строку пользовательского агента из информации, указанной в столбцах страницы.

Нейт
источник
1
Я начал с указанного здесь сайта, но на нем не было номера сборки веб-комплекта, который отображается в Google Analytics. Я нашел более полный список на useragentstring.com/pages/Safari .
Эндрю Стейтц
1
Я составил список с ОЧЕНЬ большим количеством пользовательских агентов. Надеюсь, это поможет: codereye.com/2014/12/list-of-mobile-user-agents.html
bashan
Спасибо, @Nate, так и сделаю.
bashan
10

Я нашел более полный список в строке пользовательского агента . Кстати, на этом сайте есть больше, чем просто строки пользовательского агента iOS. Кроме того, домашняя страница "разбивает" строку пользовательского агента вашего текущего браузера за вас.

Эндрю Стейтц
источник
Ссылка на строку пользовательского агента не работает. :( Я думаю, он должен сейчас указывать сюда: useragentstring.com/pages/useragentstring.php?name=Safari
Лукас Морган
1
@LucasMorgan, спасибо за замечание! Я исправил это в своем ответе.
Эндрю Стейтц
2

исправлена ​​оценка строки моего агента, очищая строку для LOWERCASE "iphone os 5_0" вместо "iPhone OS 5_0". теперь я правильно назначаю определенные классы iOS 5 своему html, когда не удалось выполнить очистку верхнего регистра.

Компьютерщик Devigner
источник
1
Что ж, я лично обнаружил бы больше, чем просто iPhone, потому что в приведенном выше примере вы не рендерируете специальный код iOS 5 для iPad и iPod touch. Вы также можете подумать о том, что в какой-то момент версия будет увеличиваться. Моя рекомендация, вероятно, будет очевидна для большинства - сначала обнаружите мобильное устройство Apple, то есть iPad / iPod / iPhone, а затем, если это так, проанализируйте версию ... не iOS, но, вероятно, браузера, то есть в этом случае Версия / 5.1 будет индикатором. Как только вы узнаете версию, вы примените свой код при условии «не ниже».
hndcrftd
1

Я использую следующее для обнаружения различных мобильных устройств, области просмотра и экрана. У меня работает неплохо, может быть полезно другим:

var pixelRatio = window.devicePixelRatio || 1;

var viewport = {
    width: window.innerWidth,
    height: window.innerHeight
};

var screen = {
    width: window.screen.availWidth * pixelRatio,
    height: window.screen.availHeight * pixelRatio
};

var iPhone = /iPhone/i.test(navigator.userAgent);
var iPhone4 = (iPhone && pixelRatio == 2);
var iPhone5 = /iPhone OS 5_0/i.test(navigator.userAgent);
var iPad = /iPad/i.test(navigator.userAgent);
var android = /android/i.test(navigator.userAgent);
var webos = /hpwos/i.test(navigator.userAgent);
var iOS = iPhone || iPad;
var mobile = iOS || android || webos;

window.devicePixelRatio- это соотношение между физическими пикселями и независимыми от устройства пикселями (провалами) на устройстве. window.devicePixelRatio= физические пиксели / провалы.

Больше информации здесь .

фульвио
источник
1
Благодарим за ответ, но учтите, что это неэффективный способ и некоторые версии устройств будут потеряны. Например, я только что проверил пользовательский агент на своем старом iPad 1, и он говорит: «... iPad; CPU OS 5_1_1 ...». Ни одна из ваших переменных не уловила бы этого. Вам понадобится регулярное выражение вродеvar iOS5 = /(iPhone|iPad).*OS 5_.*/i.test(navigator.userAgent);
Mauvis Ledford