Ich habe eine App für iOS und Android entwickelt, die über den In-App-Browser (Webview) auf eine HTML-Datei von meinem Webserver zugreift.In-App-Browser (WebView) mit PHP/Javascript erkennen
Ich möchte nicht, dass ein Benutzer auf diese Datei zugreifen kann, ohne die App zu verwenden. Gibt es eine Möglichkeit zu erkennen, ob der Benutzer auf die Datei mit der App oder direkt über einen Browser auf diesem Smartphone/Tablet/Computer zugreift? Ich denke, dass eine Lösung mit PHP viel besser ist, weil Javascript ausgeschaltet werden kann. Zumindest Google Analytics kann zwischen Safari und Safari (In-App) unterscheiden. Es sollte mit jeder Version von iOS und Android funktionieren.
Danke für Ihre Hilfe.
Lösung
Nach vielen Versuchen fand ich endlich eine funktionierende Lösung für mich!
iOS: Sie können den Unterschied zwischen Safari und dem In-App-Browser mithilfe des Benutzeragenten erkennen. Wahrscheinlich gibt es eine bessere Lösung, aber es funktioniert.
// Safari (in-app)
if ((strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile/') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari/') == false) {
echo 'Safari (in-app)';
}
Android: Der Paketname aus der App in den PHP-Variablen $_SERVER['HTTP_X_REQUESTED_WITH']
gespeichert ist.
Wie Tim van Elsloo bereits bemerkt HTTP-Header können gefälscht werden und das ist nicht absolut sicher.
Die iOs-Lösung schlägt fehl, wenn die Seite von anderen Browsern aus geöffnet wird. Nach ein paar Tests habe ich es ein wenig verfeinert. Überprüfen Sie hier: http: // Stackoverflow.com/questions/2738766/iphone-webapps-is-da-ein-weg-zu-erkennen-wie-es-war-geladen-home-screen-vs-safar/20757993 # 20757993 –