ios与andriod中webview网页js用户登录状态同步方案

在app开发过程中,我们会将一些活动营销页面使用h5来制作,然后采用ios与andriod的app中的webview中进行加载,但是现在有个问题,h5页面中如何读取用户的登录状态
有几种方案可以解决
一、js调用原生接口
这种方式很简单,原生app本身有一套机制存储用户的登录状态信息,只要通过webview开放一个接口给h5页面进行js调用即可假设这个js方法叫getuseinfo
那么我们先看看ios怎么设置这个接口,在iOS 7之后,apple添加了一个新的库JavaScriptCore,用来做JS交互,因此JS与原生OC交互也变得简单了许多。
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//再然后定义好JS需要调用的方法,例如JS要调用getuserinfo方法:
//则可以在UIWebView加载url完成后,在其代理方法中添加要调用的getuserinfo方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//定义好JS要调用的方法, getuserinfo就是调用的getuseinfo方法名
context[@"getuserinfo"] = ^() {
NSLog(@"+++++++Begin Log+++++++");
NSArray *args = [JSContext currentArguments];
for (JSValue *jsVal in args) {
NSLog(@"%@", jsVal.toString);//打印js传的参数
}
JSValue *this=[JSContect currentThis]
NSLog(@"-------End Log-------");
return @"123";//返回用户id给js
};
}
再看看andriod如何设置这个接口
protected void onCteate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
WebView webview;
webview= (WebView)findViewById(R.id.webView);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.bfw.wiki/index.html");
webview.addJavascriptInterface(new WebAppInterface(this), "Bfw");
}
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
//定义js要访问的函数
@JavascriptInterface
public String getuserinfo() {
return "123";//返回用户的信息
}
}
好了,最后一步,在html中直接调用app的接口,这里要区分一下ios与Android
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BFW NE...点击查看剩余70%
网友评论0