js oc 交互 更改UIWeb UserAgent 判断游览器 还是 app UIWebview
2016-09-23 10:38
741 查看
1 最近项目在与H5 交互的时候 对方需要判断 打开网页的方式时游览器 还是原生app UIWebView
2 决解办法
(1)传值 js 调取方法
js方法
但是Js无法拿到 app端返回的值 并且不会执行后面的方法
(2)js 调取app方法 app在调js的方法 返回值
这个方法 虽然看似 有点傻 但是 还是实现了
(3)做 内核标识 就是更改 navigator.userAgent
中 就完美的实现了
效果就是这样的 这样js就知道 请求来之 网页 还是 app
2 决解办法
(1)传值 js 调取方法
js方法
/*请求点击次数*/ // if(isAndroid){//android终端的调用方法 // }else if(isiOS){//IOS终端的方法 // return document.location = "objc:/" + 'isApp'; // }
但是Js无法拿到 app端返回的值 并且不会执行后面的方法
(2)js 调取app方法 app在调js的方法 返回值
这个方法 虽然看似 有点傻 但是 还是实现了
但是不符合开发的要求 时间上太慢了 页面加载完了 才会生效 这样 js 已完成了所有的求情 这个方法也不可行
(3)做 内核标识 就是更改 navigator.userAgent
(1)注意单个更改UIWebView的UA 会出现第一次无法拿到修改后的ua 以后每次请求时 更改的UA会出现重复的添加 最后将其修改方法放在了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}
中 就完美的实现了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSString *oldAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; NSLog(@"old agent :%@", oldAgent); //添加新的UserAgent NSString *newAgent = [oldAgent stringByAppendingString:@"/(加上商定好的标记)"]; NSLog(@"new agent :%@", newAgent); //保存添加后的UserAgent NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:newAgent, @"UserAgent", nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
效果就是这样的 这样js就知道 请求来之 网页 还是 app
相关文章推荐
- IOS UIWebView与JavaScript交互实现Web App
- 利用php中的$_SERVER['HTTP_USER_AGENT']判断来访用户是pc端还是移动端
- 使用navigator.userAgent.toLowerCase()判断登陆端是pc还是手机
- 通过user-agent判断是支付宝还是微信
- 根据USER-AGENT判断是PC端还是移动端
- 怎么判断一个APP是原生APP、混合APP还是WEB APP ?
- asp下通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问
- asp下通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问
- sdwebimagedownloader。m这个文件里面加了user-agent验证就可以了,现在问题虽然解决了。但是还是没搞懂原因
- h5和原生页面之间的交互一(判断web页面是否在App中打开)
- 根据USER-AGENT判断手机类型并跳转到相应的app下载页面
- “System.Web.UI.UserControl“不包含“xxxx”的定义
- 为web-polygraph添加user_agent和add_headers配置变量
- System.Web.UI.UserControl”,因此此处不允许
- 根据 User Agent String 判断客户端平台及浏览器的 Java 程序
- 根据 User Agent String 判断客户端平台及浏览器的 Java 程序
- nginx 通过user-agent判断是手机的浏览器
- 根据 Agent 判断 访问设置是电脑还是手机
- Creating a Web App with jQuery UI
- navigator.userAgent.indexOf 来判断浏览器类型