Genel olarak Android Tabletler nasıl algılanır? Useragent?


103

Her yere baktım. Tablet sitesi testimizi denemek için Motorola Zoom kullanıyoruz. Sorun, Android Useragent'in genel bir Useragent olması ve tablet Android ile mobil Android arasında hiçbir fark olmamasıdır. Xoom Useragent gibi belirli bir cihazı hedeflemek istemiyorum çünkü Android büyük olasılıkla yakın gelecekte birden fazla tablet cihazda olacak.

Umbraco CMS kullanıyoruz ve 51Degrees.mobi çözümünü kullanmaya baktık ve şu anda bu ihtiyaçlarımız için işe yaramayacak. Belki gelecekte. 51Degrees ve Umbraco'daki bazı kişilerin Umbraco'ya bir miktar entegrasyon yapacaklarını biliyorum, ancak nihai proje muhtemelen birkaç aylığına çıkmayacak.
Bu nedenle, neden bir Android tabletin Useragent String'ini tespit etmek ve onu şu anda olduğu gibi mobil sitemize yönlendirmek istemiyoruz.

Genel olarak Android Tablet'in nasıl tespit edileceğini bilen varsa, belirli bir cihaz değil çok yardımcı olur.


2
Sadece tahmin ediyorum, ama belki de görüntüleme çözünürlüğünün ne kadar yüksek olduğunu görmenin bir yolu vardır?
Phonon

@Phonon, Evet, sunucuya bir res değeri göndermek için Javascript kullanmaya çalışıyoruz. Bize bir __doPostBack deniyoruz ama bu değerimizi geri göndermiyor gibi görünüyor. Gizli bir girdi değerimiz var, istemci tarafını gösteriyor ama onu sunucu tarafında geri alamıyoruz.
ClosDesign

Sana yardım edebileceğimden emin değilim.
Phonon

Yanıtlar:


112

Sorun, Android Kullanıcı Aracısının genel bir Kullanıcı Aracısı olması ve tablet Android ile mobil Android arasında hiçbir fark olmamasıdır.

Bu yanlış. Mobil Android, Kullanıcı-Aracı başlığında "Mobil" dizesine sahiptir. Tablet Android bunu yapmaz.

Ancak userAgent'ta "Mobil" Safari bildiren epeyce tablet bulunduğunu ve ikincisinin Mobil ve Tablet arasında ayrım yapmanın tek / sağlam yolu olmadığını belirtmekte fayda var .


3
haklısın. Sadece Android içeren bir dizge arıyordum. Android ve! Mobile içeren dizeyi aramak zorunda kaldım. Tim Bray'in bu konudaki makalesini buldum.
ClosDesign

6
@yoavf: Bu, XOOM'un Android 3.1 güncellemesiyle düzeltilmiş görünüyor. Bir XOOM'a sahibim ve yeni test ettim - "mobil" yok.
CommonsWare

27
Bu cevap tam olarak doğru değil. UserAgent dizesinde "Mobil" Safari bildiren epeyce tablet vardır - en yeni Kindle Fire bile -. Bu noktada tableti ve telefonu algılamanın sağlam bir yolu, userAgent ve olası çözünürlük algılama desteğinin bir kombinasyonu olmadığı sürece görünmüyor.
vernonk

22
yanlış! samsung galaxy sekmesi apaçık bir tablet ama kullanıcı aracısında "mobil" var
puchu

1
"Mobil" ilavesinin Android 4 ile yapıldığına inanıyorum, hala 4 öncesi birçok cihaz var ... Android 2.x için telefon varsayıyorum, 3.x için tablet varsayıyorum (yine de birkaç yanlış pozitif olacaktır) ... aksi takdirde mobil için test edebilirsiniz ...
Tracker1

20

@Carlos: Tim Bray makalesinde bunu tavsiye ediyor ( Google'ın bir başka gönderisinde olduğu gibi ), ancak maalesef tüm tablet üreticileri tarafından uygulanmıyor.

... Büyük form faktörlü cihaz üreticilerinin Kullanıcı Aracısından "Mobil" i kaldırmasını öneririz ...

Gördüğüm çoğu Android tablet kullanıcı aracısı dizesi mobil safari kullanıyor, örneğin Samsung Galaxy Tab:

Mozilla / 5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build / FROYO) AppleWebKit / 533.1 (KHTML, Gecko gibi) Sürüm / 4.0 Mobil Safari / 533.1

Şu anda Android tabletleri algılamak için cihaz adlarını kontrol ediyorum. Piyasada sadece birkaç model olduğu sürece sorun değil ama yakında bu çirkin bir çözüm olacak.

En azından XOOM durumunda, mobil kısım gitmiş görünüyor:

Mozilla / 5.0 (Linux; U; Android 3.0; en-us; Xoom Build / HRI39) AppleWebKit / 534.13 (KHTML, Gecko gibi) Sürüm / 4.0 Safari / 534.13

Ancak şu anda yalnızca Andorid 3.x'e sahip tabletler olduğu için, Android 3'te kontrol etmek yeterli olacaktır.


1
kontrol ettiğiniz cihazların listesini ve kodlamayı gönderebilir misiniz?
LTech

12

"Mobil" kullanıcı aracısını da algılamak daha iyidir

Dokunmatik ekran optimizasyonları gibi Android'e özgü özellikleri uygulamak için User-Agent'ta "android" i tespit etmek isteyebilirsiniz, ancak ana mesajımız şudur: Mobil siteniz UA koklamaya bağlıysa, lütfen "mobil" dizelerini tespit edin ve User-Agent'ta sadece "android" yerine "android". Bu, hem mobil hem de tablet ziyaretçilerinize doğru şekilde hizmet vermenize yardımcı olur.

Android cihazı Tarayıcı aracılığıyla algılama

 < script language="javascript"> <!--
     var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
              if (mobile) {
                  alert("MOBILE DEVICE DETECTED");
                  document.write("<b>----------------------------------------<br>")
                  document.write("<b>" + navigator.userAgent + "<br>")
                  document.write("<b>----------------------------------------<br>")
                  var userAgent = navigator.userAgent.toLowerCase();
                  if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1))
                         document.write("<b> ANDROID MOBILE <br>")
                   else if ((userAgent.search("android") > -1) && !(userAgent.search("mobile") > -1))
                       document.write("<b> ANDROID TABLET <br>")
              }
              else
                  alert("NO MOBILE DEVICE DETECTED"); //--> </script>

3
Bu mükemmel çalışıyor. Buna iPad ve iPhone / iPod için ekledim. else if (userAgent.search("ipad") > -1) document.write("<b> iPad <br>") else if ((userAgent.search("iphone") > -1)||(userAgent.search("ipod") > -1)) document.write("<b> iPhone or iPod <br>")
Spencer Cole

Mozilla / 5.0 (linux; u; android 2.2; en-gb; gt-p1000 build / froyo) applewebkit / 533.1 (khtml, gecko gibi) version / 4.0 mobile safari / 533.1 için 'mobile' kelimesi nasıl çalışır? Samsung Galaxy Tablet için mi?
LTech

8

Yalnızca Xoom'u hedeflemek istemediğiniz için bu komut dosyasını deneyebilirsiniz. Bir Xoom'um yok ama çalışmalı.

function mobile_detect(mobile,tablet,mobile_redirect,tablet_redirect,debug) {
var ismobile = (/iphone|ipod|android|blackberry|opera|mini|windows\sce|palm|smartphone|iemobile/i.test(navigator.userAgent.toLowerCase()));
var istablet = (/ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i.test(navigator.userAgent.toLowerCase()));

if (debug == true) {
    alert(navigator.userAgent);
}

if (ismobile && mobile==true) {
    if (debug == true) {
        alert("Mobile Browser");
    }
    window.location = mobile_redirect;
} else if (istablet && tablet==true) {
    if (debug == true) {
        alert("Tablet Browser");
    }
    window.location = tablet_redirect;
}
}

Github'da bir proje oluşturdum. Kontrol edin - https://github.com/codefuze/js-mobile-tablet-redirect . Yanlış bir şey varsa göndermekten çekinmeyin!


1
Bu, ICS (4.0) gibi 3.0'ın üzerindeki Android sürümlerinde çalışmaz. Kabul edilen cevabın doğru olduğunu düşünüyorum - kullanıcı aracısında "Mobil Safari" olup olmadığını kontrol edin.
Suman

Diğer Kindle'lardan emin değilim, ancak Kindle Fire 1'in kullanıcı aracısı dizesinde 'kindle' YOKTUR - ne de 'android' içermez; tek ipuçları 'İpek' ve 'İpek Hızlandırılmış' kelimeleridir.
mklement0

6

Kullanıcı aracısında Android'i tespit ettiğimde, tablet ve akıllı telefon tarayıcılarını şu şekilde ayırt ediyorum (bu Python kullanıyor, ancak diğer programlama dilleri için de benzer şekilde basit):

if ("Android" in agent):
  if ("Mobile" in agent):
    deviceType = "Phone"
  else:
    deviceType = "Tablet"

GÜNCELLENDİ: Aşağıdaki yorumlara göre Android'de Chrome kullanımını yansıtmak için.


Neden aracıda "Mobil" i aramıyorsunuz?
Eren Tantekin

Bunun da işe yarayacağını düşünüyorum, ancak sadece "Mobil" i aramak tehlikeli olabilir - isimleri olan cihazlar olabilir, "HTC Mobile" diyebilir, vb. Bence bu önerilen yaklaşımdır.
Suman

1
Google artık Android için Chrome'u piyasaya sürdüğüne göre, yaklaşımınız biraz sorunlu olabilir. Çünkü, Android'deki Chrome, hisse senedi Android tarayıcısının yaptığı gibi, normal "Mobil Safari" yerine kendisini "Chrome Mobil" olarak bildirecektir. Bazı resmi öneriler için: developers.google.com/chrome/mobile/docs/user-agent
Eren Tantekin

4

Bu sitedeki Aracılar dizelerine göre:

http://www.webapps-online.com/online-tools/user-agent-strings

Bu sonuçlar ortaya çıktı:
İlk olarak:

Tüm Tablet Cihazlarda şunlar bulunur:
1. Tablet
2. iPad

İkinci:

Tüm Telefon Cihazlarında:
1. Cep
2. Telefon

Üçüncü:

Tablet ve Telefon Cihazları:
1. Android

Seviye seviye tespit edebiliyorsanız, sonucun yüzde 90 doğru olduğunu düşünüyorum. SharePoint Cihaz Kanalları gibi.


2

İşte kullandığım şey:

public static boolean onTablet()
    {
    int intScreenSize = getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;

    return (intScreenSize == Configuration.SCREENLAYOUT_SIZE_LARGE) // LARGE
    || (intScreenSize == Configuration.SCREENLAYOUT_SIZE_LARGE + 1); // Configuration.SCREENLAYOUT_SIZE_XLARGE
    }

2

Bazı tabletler "mobil" atlarsanız biz diyemeyiz iken, Samsung Galaxy Tab gibi birçok yapmak , onların kullanıcı aracısı mobil sahip modeli özelliklerini kontrol başvurmadan imkansız bir android tablet ve android telefon arasında algılanması mümkündür. Bu IMHO, cihaz listenizi aylık olarak güncellemeyi ve genişletmeyi planlamadığınız sürece zaman kaybıdır.

Maalesef buradaki en iyi çözüm, Google'a bu konuda şikayette bulunmak ve Android için Chrome'u düzeltmelerini sağlamaktır, böylece bir mobil cihaz ile tablet arasında tanımlanacak bazı metinler ekler. Cehennem dizesinin belirli bir yerinde tek bir M VEYA T harfi bile yeterli olurdu, ama sanırım bu çok mantıklı.


1

Xoom, kullanıcı aracısında Xoom kelimesine sahiptir: Mozilla / 5.0 (Linux; U; Android 3.0.1; en-us; Xoom Build / HRI66) AppleWebKit / 534.13 (KHTML, Gecko gibi) Sürüm / 4.0 Safari / 534.13

Galaxy Tab, kullanıcı aracısında "Mobil" e sahiptir: Mozilla / 5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build / FROYO) AppleWebKit / 533.1 (KHTML, Gecko gibi) Sürüm / 4.0 Mobil Safari / 533.1

Bu nedenle, belirli bir Android sürümünün mobil olup olmadığını tespit etmek zor olan Xoom'u tespit etmek kolaydır.


1

Modern tabletlerin çoğu bal peteği veya 3.x ile çalışır. Telefonlar varsayılan olarak 3.x'i çalıştırmaz. Şu anda 2.x çalıştıran tabletlerin çoğu daha az kapasiteye sahiptir ve yine de bir mobil site ile sunulduğunda daha iyi olabilir. Kusursuz olmadığını biliyorum .. ama sanırım mobilin olmamasından çok daha doğru ..


1
Aslında telefonlar 3.x'i bile çalıştıramıyor çünkü bu yalnızca Android'in tabletlere yönelik bir sürümü ve açık kaynaklı değildi.
Eren Tantekin

1

Mobil Android, kullanıcı aracısı dizesinde "mobil" olabilirken, ya bir Tablette Android için Opera Mobile kullanıyorsa? Kullanıcı aracısı dizesinde yine "mobil" olacaktır, ancak Tablet boyutundaki siteleri görüntülemesi gerekir. Önünde yalnızca "mobil" yerine "opera" olmayan "mobil" için test etmeniz gerekir.

ya da Opera Mobile'ı unutabilirsiniz.


1
Opera mobil, kullanıcı dizesinde 'mobil' kullanmaz, 'mobi' kullanır. Buraya
Ian Stanway

2
Cep telefonları için Opera Mobile'ın kullanıcı aracısı dizesinde "Opera Mobi" vardır, ancak tabletler için Opera Mobile'ın kullanıcı aracı dizesinde "Opera Tablet" vardır.
tagawa


1

"Mobil" yokluğunu kullanırsanız, neredeyse doğrudur. Ancak, Mobile anahtar sözcüğü göndermeyen HTC Sensation 4G (android 2.X ile 4,3 inç) var.

Bunu ayrı ayrı tedavi etmek isteyebilmenizin nedeni iframesvb.


0

51Degrees beta, 1.0.1.6 ve en son kararlı sürüm 1.0.2.2 (4/28/2011) artık tablet için koklama özelliğine sahip. Temel olarak şu satırlar boyunca:

string capability = Request.Browser["is_tablet"];

Umarım bu size yardımcı olur.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.