前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >App与WebView交互方式

App与WebView交互方式

原创
作者头像
SheltonWan
修改2019-08-15 10:15:48
1.4K0
修改2019-08-15 10:15:48
举报

1、让Webview响应App的行为,可以通过调用函数:evaluateJavaScript:completionHandler:

参数javaScriptString是一个字符串,需要与前端协商好对应html中js定义的对象及函数,譬如

NSString *script = [NSString stringWithFormat:@“obj.jsmethod(‘%@‘)”, parmeter];

obj——html中script中定义的对象。

jsmethod——html中script中定义的函数。

parmeter——我们要传递给WKWebview中的参数,通常用NSJSONSerialization转化为字符串来传递。

通过执行函数evaluateJavaScript:completionHandler:,我们可以传递app端中的数据给webview,并触发html脚本函数的调用,从而响应app的行为。

2、webview如何调用app端的函数呢?

在html的脚本中添加iframe对象,通过设置iframe的src属性,可成功触发WKWebview中的代理方法调用。

webView:decidePolicyForNavigationAction:decisionHandler:

常见的方式就是在脚本函数中设置iframe的src属性值,触发WKWebview的代理函数调用,

我们可以在代理方法中拦截请求,首先iframe的src的值也就是我们自定义的scheme,通过对该scheme的判断来得知我们想干什么,从而去调用app中对应的函数。除了可以在自定义scheme中传递我们需要的参数外,我们可以在html中的脚本中把数据储存好,通过evaluateJavaScript:completionHandler:来调用脚本函数来返回需要的参数。该参数会在completionHandler的回调函数中以字符串返回,通常是用NSJSONSerialization来解析。

具体如何通过WKWebview传递过来的数据来判断该执行哪个函数,有一种实现方式:

用一个字典来储存对应函数地址,这样我们可以通过传递过来的key来获得对应的函数。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档