解决 Flutter webview setcookie 在ios-wkwebview上首次进程不生效

2,952 阅读1分钟

问题产生现象

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 方法 ,然后增加红框内的代码即可: