提出问题:网页定位在app中定位不太准确,这个大家都知道,这就需要我们前端人员定位,通过交互传给后台,包括经纬度,省市区,我刚进入界面的时候需要向后台传一次经纬度,以便他们计算商家的距离展示出来,在这时候需要后台获取一次,当点击webview里面的城市选择的时候,再需要交互一次,后台第二次获取,当你这时候就会发现,第二次获取不会成功,因为后台在页面找不到我们协商的那个方法,但是我们确实前端存在这个方法,很奇怪。
解决方案:
先看看这个代码
JSContext *context = [webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"iOSGetLocation"] = ^()
{
NSString *str = [NSString stringWithFormat:@"%d",arc4random()%100];
return str;
};
NSString *jsonS = [NSString stringWithFormat:@"%d",arc4random()%4];
NSString *javaScriptString = [NSString stringWithFormat:@"iOSGetLocation('%@')",jsonS];
[webview stringByEvaluatingJavaScriptFromString:javaScriptString];
这里有个注意的地方:我们按照我写的总能成功,因为我传的是数字,如果你传其它字符串或者其它的东西如json啥的就需要转码,别以为不行,iOSGetLocation就是约定的方法名,jsonS就是传的参数
这个方法对有些公司能解决交互问题,因为他们的端口不多,处理起来可能没那么麻烦,有些公司端口多的,后台不一定能处理,因为要兼顾微信端啥的。
我们所在公司就解决不了,但是是用其它方法解决的,这个方法没有用到特定的交互,我就不分享了。。。
没写过几次博客,写的不好大家谅解