js oc 交互 更改UIWeb UserAgent 判断游览器 还是 app UIWebview

1 最近项目在与H5 交互的时候 对方需要判断 打开网页的方式时游览器 还是原生app UIWebView

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
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值