Je souhaite être en mesure de détecter un utilisateur lorsque l'utilisateur parcourt une page Web dans l'application Twitter. En détectant, je veux juste ajouter une classe de corps que je vais utiliser pour changer la façon dont la page recherche les utilisateurs dans l'application Twitter. Cependant, tous mes essais ont jusqu'ici échoué.Comment détecter les pages lorsqu'un internaute navigue à l'intérieur de Twitter dans l'application?
Je peux détecter WebView dans l'application Facebook en utilisant le code suivant
var ua = navigator.userAgent;
if ((ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1)) {
return 'facebook';
}
J'ai regardé autour/googlé autour/vérifié les autres solutions stackoverflow. Cependant, je ne pouvais pas trouver une solution où je peux détecter Twitter dans l'application. C'est-à-dire, je veux détecter quand un utilisateur navigue une page dans l'application de gazouillement.
Les choses que j'ai essayé et échoué sont inférieurs
if (/Twitter for/i.test(nua) === true) {
return 'twitter';
}
ou
if (/\/\/t.co\//i.test(document.referrer) === true && /Safari\//.test(nua) === false) {
return 'twitter';
}
ou le contrôle du navigateur, périphérique, le vendeur, le modèle, le type de dispositif, moteur, os, version os (pourquoi je vérifiais ça?!?). J'ai vérifié en utilisant Modernizr; Cependant, aucune différence n'a été trouvée entre Safari autonome et Twitter intégré. En outre, vérifié à l'aide Detect if user is using webview for android/iOS or a regular browser
également essayé ce qui suit à l'échec
var userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test(userAgent),
ios = /iphone|ipod|ipad/.test(userAgent);
var standalone = window.navigator.standalone,
userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test(userAgent),
ios = /iphone|ipod|ipad/.test(userAgent);
if(ios) {
if (safari) {
$('.debug').prepend('Yeah I am a browser in ios');
} else if (!safari) {
$('.debug').prepend('Yeah I am a webview in ios');
}
} else {
$('.debug').prepend('Yeah I am NOT a ios');
}
if(ios) {
if (!standalone && safari) {
$('.debug').prepend('Yeah I am a browser in ios');
} else if (standalone && !safari) {
$('.debug').prepend('Yeah I am a standaline in ios');
} else if (!standalone && !safari) {
$('.debug').prepend('Yeah I am WEBVIEW');
}
} else {
$('.debug').prepend('Yeah I am NOT IOS');
}
var isWebView = !/safari/.test(window.navigator.userAgent.toLowerCase()) || navigator.platform === 'iOS' || navigator.platform === 'iPhone'
$('.debug').prepend('<br>isWebView? : ' + isWebView + "<br>");
$('.debug').prepend('<br>AM I WEBVIEW?: ' + /AppName\/[0-9\.]+$/.test(navigator.userAgent));
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);
var is_safari_or_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
$('.debug').prepend('<br> is_uiwebview :' + is_uiwebview);
$('.debug').prepend('<br> is_safari_or_uiwebview :' + is_safari_or_uiwebview);
var uaSafari = navigator.userAgent.match(/Safari/i)
var uaSafariInput = navigator.userAgent.match(/Safari/i).input
var uaSafariIndex = navigator.userAgent.match(/Safari/i).index
$('.debug').prepend('<br> ' + uaSafari + '<br>' + uaSafariInput + '<br>' + uaSafariIndex + '<br>' + navigator.vendor + '<br>' + navigator.product + '<br>' + navigator.productSub + '<br>' + navigator.languages.length + '<br>' + navigator.doNotTrack + '<br>' + navigator.maxTouchPoints + navigator.maxTouchPoints);
//Check headers and see if any difference there
var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
$('.debug').prepend('<br> headers \t ' + headers);
if (/Twitter for/i.test(navigator.userAgent) === true) {
$('.debug').prepend('<br> Test1 ');
}
$('.debug').prepend('<br> Document referrer is : '+ document.referrer + " <br> ");
if (/\/\/t.co\//i.test(document.referrer) === true && /Safari\//.test(navigator.userAgent) === false) {
$('.debug').prepend('<br> Test2 ');
}
}
C'est très triste à savoir. :( –
Apple n'autorise pas les autres moteurs de navigateur sur ios, car ils sont tous basés sur WebKit, c'est pourquoi l'agent utilisateur est exactement le même entre les applications: les applications twitter et facebook utilisent toutes le même moteur de navigateur. Peut-être changer de stratégie et voir s'il y a des paramètres url spécifiques à l'application dans le contexte de la page ou peut-être même des variables js.Vous devrez chercher des différences.SwagatoBhatta pourrait essayer les empreintes digitales du navigateur, même si elles ne sont pas assez fiables. –