2012-04-02 3 views
22

Attualmente sto cercando un codice per il rilevamento PHP dei dispositivi mobili, che è probabilmente abbastanza semplice.Rileva dispositivi mobili e tablet

Ora ho solo un problema: voglio rendere possibile la visualizzazione di file di visualizzazione unici nel mio framework MVC per tablet, cellulari e pagine Web. Quindi ho bisogno di dividere il tablet dal resto dei dispositivi mobili.

Attualmente questo è il codice, che sto usando:

public function isMobile() 
{ 
    if(preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT'])) 
    return true; 
else 
    return false; 
} 

Ma questo non è sufficiente - l'unico controllo è wheter il dispositivo è un dispositivo mobile - se non si tratta di serie raccontare il quadro, che siamo su un computer L'ultima parte è ok, ma voglio fare una spaccatura dei dispositivi mobili nei cellulari reali e in un gruppo di secreti, che dovrebbe essere compresse.

Spero di aver esaudito il mio desiderio, e spero, che abbiate qualche input in un buon modo per raggiungere questo obiettivo.

Grazie in anticipo.

+0

Quindi la tua espressione regolare non è ok o vuoi dividere questa espressione regolare in più (per dispositivi mobili e tablet)? – tonymarschall

+0

> Ecco una classe con metodi per rilevare individualmente ciascuna piattaforma. >> http://code.google.com/p/php-mobile-detect/ Questo funziona solo su Opera su tablet. Il browser Android integrato su tablet restituisce un cellulare. – hello

risposta

33

Ecco una classe con metodi per rilevare individualmente ciascuna piattaforma.

+1

Questo in realtà risponderà alla domanda - SE assicuratevi di fare il controllo isTablet prima del controllo isMobile .. Perché i tablet sono anche marcati come "mobiles" - per ragioni logiche .. :) Grazie, Joe! – denlau

+3

L'ho trovato prima oggi! Stavo per rispondere a questa domanda esattamente come questa risposta ha risposto! +1 – pattyd

+0

Qualcosa di simile disponibile per ASP.NET? –

0

È inoltre possibile utilizzare una soluzione più completa come WURFL Nube, che è un servizio che rileva le capacità dei dispositivi mobili, come is_mobile e is_tablet. Esiste un piano gratuito per siti a basso traffico: http://www.scientiamobile.com/cloud

5

Mobile_Detect è una classe PHP leggera per il rilevamento di dispositivi mobili (compresi i tablet). Utilizza la stringa User-Agent combinata con intestazioni HTTP specifiche per rilevare l'ambiente mobile. - Per saperne di più http://mobiledetect.net

+0

Grazie, è abbastanza utile. – deathlock

8

Vecchia domanda, ma qui va la mia opinione per quanto riguarda il rilevamento mobile.

Nella tua domanda affermi che desideri file unici per dispositivi mobili, quindi posso presumere che sia necessario presentare una versione diversa del sito Web per client mobili e client desktop.

Questo approccio è OK fino a un certo punto. E quel punto si chiama Android. Ci sono ~1.5 million dispositivi Android attivati ​​ogni giorno con risoluzioni da 320 * 240 a 2560 * 1600, il che rende difficile a if {} else per ognuno di essi. Anche se provi a creare un elenco con i dispositivi più utilizzati e provi a scegliere come target solo quelli, sarà difficile supportare un nuovo dispositivo in futuro.

Il mio approccio un po 'di tempo fa era dimenticare il vecchio metodo di dividere i dispositivi in ​​categorie "mobili" e "desktop" e creare un nuovo metodo. E questo metodo consiste in browser "buoni" e "cattivi" basati sulle funzionalità del browser. Ad esempio, se il browser supporta l'archiviazione locale, sarà nella categoria "buona".

A partire da questo, ho avuto la possibilità di creare una versione "base" del sito web, molto semplice dal punto di vista dell'interfaccia utente, ma che funzionerà su browser. Questa versione di base del sito presenterà lo stesso contenuto (perché quello che conta alla fine della giornata) su tutti i dispositivi, sarà di dimensioni molto ridotte (meno attivi, più piccolo html) e sulla base di funzionalità del browser saranno arricchito dal lato client.

Così alla fine si finirà con un sito web che ha ingombro molto ridotto (formato html e le attività), che sembra cross browser OK e sosterrà qualsiasi nuovo dispositivo che si presenta sul mercato senza alcuna modifica , si caricherà velocemente anche su connessioni scadenti e che può essere arricchito sul lato client in base alle funzionalità del browser.

Puoi persino arricchire la pagina web in base alle dimensioni del dispositivo: se il browser segnala un grande schermo, puoi inserire più risorse, più pubblicità e rendere più bella la pagina web; se il browser segnala è su uno schermo piccolo, lo lasci così com'è.

+1

In realtà questa risposta vale la pena di leggere non importa quale - è un approccio interessante, che non ho mai pensato :) – denlau

+1

Approvazione completa di questo approccio, ed è esattamente quello che sto cercando di ottenere, ma è certamente più facile detto che fatto, almeno a livello di server! –