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

how to determine if website is opened on iPhone/Android browser or from iPhone/Android app web view?

本文关键字:Android iPhone 视图 网页 应用程序 网站 何确定 浏览器      更新时间:2023-09-26

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

  • 设备浏览器
  • 或在本机应用程序 Web 视图中。
  • 寻找适用于安卓和iOS的解决方案

iPhone

更改应用程序中的用户代理

// 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); 
}

对于安卓:

活动创建

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

价值观.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);
}

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