如何确定网站是在iPhone / Android浏览器上打开还是从iPhone / Android应用程序Web视图打开?

时间:2016-02-29 08:49:54

标签: javascript android ios webview uiwebview

目标是识别正在打开的网站

  • 设备浏览器
  • 或在原生应用网页视图中。
  • 寻找适用于Android和iOS的解决方案

2 个答案:

答案 0 :(得分:2)

<强> iPhone

更改应用程序中的UserAgent

// Modify the user-agent
NSString* suffixUA = @"AppName";
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero]; 
NSString* defaultUA = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSString* finalUA = [defaultUA stringByAppendingString:suffixUA];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:finalUA, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

现在你可以通过Javascript检查:

function isIOS() {
    return /iPhone|iPad|iPod/i.test(navigator.userAgent);
}

function isIOSInApp() {
    return isIOS() && /AppName/i.test(navigator.userAgent); 
}

适用于Android:

活动onCreate

this.webView.getSettings().setUserAgentString(
    this.webView.getSettings().getUserAgentString() 
    + " "
    + getString(R.string.user_agent_suffix)
);

<强> Values.XML

<string name="user_agent_suffix">AppName/1.0</string>

现在你可以通过Javascript检查:

function isAndroid() {
    return /Android/i.test(navigator.userAgent);
}

function() isNativeApp {
   return isAndroid() && /AppName\/[0-9\.]+$/.test(navigator.userAgent);
}

答案 1 :(得分:1)

您可以使用mobileesp提供的mdetect.js文件。 检查以下链接: http://www.hand-interactive.com/detect/mobileesp_demo_javascript.htm