flutter_webview设置cookie,在ios端H5获取cookie为空问题

版本:webview_flutter: ^3.0.4。

最近跟webview杠上了,产品改造,flutter做主要的壳子,链接到现有的H5上。由于H5已经有完整的功能,大部分的业务都需要在H5端去完成。使用webview需要支持以下几点:
1、flutter调用h5方法
2、h5调用flutter方法
3、支持设置cookie
4、路由监听
其实这四个都比较呢简单,但在实际开发中坑还是比较多的,今天就来填一哈ios上h5获取cookie为空的问题。

webview设置cookie

最新版本设置initialCookies参数即可,本来这样设置就可以了,谁知打开H5页面的时候提示登陆过期,后来发现webview设置cookie的时候做了编码操作,需要在H5端上重新解码才行,怎么解码看这篇webview_flutter,cookie解码。

问题:android运行正常, ios还是登陆过期, 后调试发现,H5端获取cookie竟然是空的,网上找了很多都没能解决我的问题,于是只能搞搞曲线救国了(想一个不通过initialCookies设置就能把cookie传给H5端方式)。

解决方案

1、修改源码
需懂ios开发的,这方案只能放弃了。
2、webview加载完后调用H5的方法
onPageFinished方法执行的时候调用h5的方法,通过调用h5的方式去设置cookie。

onPageFinished: (e) {
  webViewController.runJavascriptReturningResult('setCookieIos(${getCookie()})');
 })

3、把cookie放在uerAgent上
把cookie放在uerAgent上,只要h5页面被加载,uerAgent就能获取到。

userAgent: Platform.isAndroid ? 'AndroidAPP' : '${getCookie()}-_-IOSAPP',

接下来就比较简单了,你只需要在H5接口被请求之前上拿到cookie重新设置上去就行。

你可能感兴趣的:(FlutterApp,webview,ios,flutter)