如何检测用户是否正在使用webview for android或iOS浏览页面?
在stackoverflow上发布了各种解决方案,但我们还没有针对这两种操作系统的防弹解决方案.
目标是if语句,例如:
if (android_webview) {
jQuery().text('Welcome webview android user');
} else if (ios_webview) {
jQuery().text('Welcome webview iOS user');
} else if (ios_without_webview) {
// iOS user who's running safari, chrome, firefox etc
jQuery().text('install our iOS app!');
} else if (android_without_webview) {
// android user who's running safari, chrome, firefox etc
jQuery().text('install our android app!');
}
到目前为止我尝试过的
检测iOS webview(source):
if (navigator.platform.substr(0,2) === 'iP'){
// iOS (iPhone, iPod, iPad)
ios_without_webview = true;
if (window.indexedDB) {
// WKWebView
ios_without_webview = false;
ios_webview = true;
}
}
检测android webview,我们有很多解决方案,如this和this.我不确定什么是合适的方法,因为每个解决方案似乎都有问题.
解决方法:
检测iOS设备的浏览器与Android设备不同.对于iOS设备,您可以通过使用JavaScript检查用户代理来执行此操作:
var userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test( userAgent ),
ios = /iphone|ipod|ipad/.test( userAgent );
if( ios ) {
if ( safari ) {
//browser
} else if ( !safari ) {
//webview
};
} else {
//not iOS
};
对于Android设备,您需要通过服务器端编码来检查请求标头.
PHP:
if ($_SERVER['HTTP_X_REQUESTED_WITH'] == "your.app.id") {
//webview
} else {
//browser
}
JSP:
if ("your.app.id".equals(req.getHeader("X-Requested-With")) ){
//webview
} else {
//browser
}