2016-07-13 21 views
8

Sto usando il codice seguente per verificare se l'utente ha aperto il sito in App o noControllare utente apre il sito in App o no

$ua = strtolower($_SERVER['HTTP_USER_AGENT']); 
    if(stripos($ua,'android') && stripos($ua,'mobile') !== false) { 
    if($_SERVER['HTTP_X_REQUESTED_WITH'] == "apppackagename") { 
    echo "Opening with App"; 
    } 
    } 

Ma questo non sta funzionando in alcuni dispositivi come.

GT - S7582 Android versione 4.2.2

C'è qualche soluzione per far funzionare tutto in vecchi dispositivi di versione?

Grazie in anticipo!

+0

Che cosa vuoi risolvere? – greenapps

+0

@greenapps controlla la mia modifica – Sree

+0

Quello che vuoi correggere non è chiaro. – greenapps

risposta

4

si può semplicemente inserire nella top https://github.com/serbanghita/Mobile-Detect/blob/master/Mobile_Detect.php E 'una libreria leggera e richiede di includere solo un singolo file.

ad esempio:

require_once('Mobile_Detect.php'); 
$device = new Mobile_Detect(); 

if ($device->isMobile()) { 
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
     $_SERVER['HTTP_X_REQUESTED_WITH'] == "apppackagename") { 
      echo "Opening with App"; 
     } 
} 

se si desidera rilevare Android, allora è possibile digitare:

$device->isAndroidOS() 

E 'il modo più affidabile per rilevare un dispositivo mobile (ma anche senza prova di proiettile). Non esiste alcun modo per un rilevamento mobile affidabile con un semplice controllo agente utente.

Se si guarda nella fonte https://raw.githubusercontent.com/serbanghita/Mobile-Detect/master/Mobile_Detect.php, è possibile vedere che GT-S7582 è supportato.

1

Si consiglia di utilizzare una libreria con un set stabile di controlli per il rilevamento di dispositivi mobili/app. L'aspetto positivo di questo è che puoi aspettarti che il framework supporti i dispositivi in ​​arrivo semplicemente aggiornando la tua libreria invece di ricodificarla tu stesso.

Per PHP ci sembra essere Mobile Detect, è open source ed ha contributo attivo: https://github.com/serbanghita/Mobile-Detect

+0

Grazie per la risposta :). Questo è utile. Ma non voglio usare la libreria – Sree

1

Se si desidera nascondere l'errore è necessario utilizzare array_key_exists in voi codice come questo:

$ua = strtolower($_SERVER['HTTP_USER_AGENT']); 
if(stripos($ua,'android') && stripos($ua,'mobile') !== false) { 
    if(array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER) { 
     if($_SERVER['HTTP_X_REQUESTED_WITH'] == "apppackagename") { 
      echo "Opening with App"; 
     } 
    } else { 
     echo "Sorry... I don't see a package!"; 
    } 
} 

La funzione array_key_exists "Controlla se la chiave di data o di un indice esiste nella matrice".

Forse in futuro è necessario nascondere altri errori, così, è possibile utilizzare @ per mute errore. See here.

Problemi correlati