Tôi muốn có thể phát hiện người dùng khi người dùng duyệt một trang web bên trong ứng dụng twitter. Bằng cách phát hiện, tôi muốn chỉ cần thêm một lớp cơ thể mà tôi sẽ sử dụng để thay đổi cách trang tìm kiếm người dùng bên trong ứng dụng twitter. Tuy nhiên, tất cả những nỗ lực của tôi cho đến nay đều thất bại.Cách phát hiện các trang khi người dùng duyệt bên trong twitter trong ứng dụng?
tôi có thể phát hiện webview bên trong ứng dụng Facebook bằng cách sử dụng đoạn mã sau
var ua = navigator.userAgent;
if ((ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1)) {
return 'facebook';
}
Tôi đã nhìn quanh/googled xung quanh/kiểm tra các giải pháp StackOverflow khác. Tuy nhiên, tôi không thể tìm thấy một giải pháp mà tôi có thể phát hiện twitter trong ứng dụng. Đó là, tôi muốn phát hiện khi người dùng duyệt một trang bên trong ứng dụng twitter.
Những điều tôi đã cố gắng và thất bại dưới
if (/Twitter for/i.test(nua) === true) {
return 'twitter';
}
hoặc
if (/\/\/t.co\//i.test(document.referrer) === true && /Safari\//.test(nua) === false) {
return 'twitter';
}
hoặc kiểm tra cho trình duyệt, thiết bị, nhà cung cấp, mô hình, loại thiết bị, động cơ, os, phiên bản os (tại sao tôi kiểm tra điều này?!?). Tôi đã kiểm tra bằng Modernizr; tuy nhiên, không có sự khác biệt giữa Safari độc lập và Twitter trong ứng dụng. Ngoài ra, kiểm tra sử dụng Detect if user is using webview for android/iOS or a regular browser
cũng thử như sau với thất bại
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 ');
}
}
Điều đó thật đáng buồn khi biết. : ( –
Apple không cho phép các công cụ trình duyệt khác trên ios. Bên dưới tất cả đều dựa trên WebKit. Đó là lý do tại sao tác nhân người dùng giống hệt nhau giữa các ứng dụng. Ứng dụng twitter và facebook đều sử dụng cùng một công cụ trình duyệt dưới mui xe. Có thể thay đổi chiến lược và xem liệu có thông số url cụ thể cho ứng dụng trong ngữ cảnh trang hay thậm chí có thể là biến js.Bạn sẽ phải tìm hiểu về bất kỳ sự khác biệt nào. –