问题产生现象
webview_flutter: ^0.3.21
flutter_webview_plugin: ^0.3.10+1
webview_cookie_manager: ^1.0.0
flutter中的webview cookie控制 在android上 控制的还不错,但是在ios 平台上表现糟糕。 尤其是当ios使用的是wkwebview的时候 你在flutter上 setcookie 首次不生效。 必须要杀掉进程以后 第二次启动才会生效。 而且之后也有概率性的setcookie无效。 这个真的很尴尬,当你在native上登录成功以后 你的h5 却拿不到你的登录态。
解决方案
跨平台方案解决不了的时候 那当然是想办法在原生平台上弥补了 在ios端 直接注入你的cookie
NSMutableDictionary *cookieProperties1 = [NSMutableDictionary dictionary];
[cookieProperties1 setObject:@"cookie-key" forKey:NSHTTPCookieName];
[cookieProperties1 setObject:@"domain" forKey:NSHTTPCookieDomain];
[cookieProperties1 setObject:@"/" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie1 = [NSHTTPCookie cookieWithProperties:cookieProperties1];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie1];
这一步 就是很简单的 在ios端 用oc代码 set cookie, 最后关键的一步 在下面
找到你项目目录下的这个文件,其实就是flutter帮你写的一部分oc代码了。
我们找到 initWebview 方法 ,然后增加红框内的代码即可: