再会WKWebView

有关WKWebView处理cookie问题,又多次测试,发现并不需要在 初识WKWebView那么麻烦,有更简便的方法,实例代码如下:

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    WKUserContentController* userContentController = WKUserContentController.new;
    WKUserScript * cookieScript = [[WKUserScript alloc]
                                   initWithSource:[self obainSettingCookieJs]
                                   injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
    [userContentController addUserScript:cookieScript];
   userContentController;

- (NSString *)obainSettingCookieJs{
    NSString *JSFuncString =
    @"function setCookie(name,value,expires)\
    {\
    var oDate=new Date();\
    oDate.setTime(oDate.getTime()+(expires*24*3600*1000));\
    document.cookie=name+'='+value+';expires='+oDate+';path=/';\
    }\
    function getCookie(name)\
    {\
    var arr = document.cookie.match(new RegExp('(^| )'+name+'=([^;]*)(;|$)'));\
    if(arr != null) {return unescape(arr[2]); } else { return null;}\
    }\
    function delCookie(name)\
    {\
    var exp = new Date();\
    exp.setTime(exp.getTime() - 1);\
    var cval=getCookie(name);\
    if(cval!=null) document.cookie= name + '='+cval+';expires='+exp.toGMTString();\
    }";
    
    //拼凑js字符串
    //取出 JSESSIONID  uid token
    //    [SettingBaseTool deleteDatasByKey:jessionString];
    //     [SettingBaseTool deleteDatasByKey:uidString];
    //     [SettingBaseTool deleteDatasByKey:tokenString];
    NSMutableString *JSCookieString = JSFuncString.mutableCopy;
    //把cookie所有值传过去
    NSMutableArray *allCookiesArray = [SettingBaseTool queryAllCookies];
    for (NSString *cookiesString in allCookiesArray) {
        NSArray *cookiesArray = [cookiesString componentsSeparatedByString:kCookieConnectString];
        if ([cookiesArray isNotEmpty]&&(cookiesArray.count == 2)) {
            NSString *keyString = cookiesArray[0];
            NSString *valueString = cookiesArray[1];
            if ([valueString isNotEmpty]) {
                NSString *excuteJSString = [NSString stringWithFormat:@"setCookie('%@', '%@', 15);", keyString, valueString];
                [JSCookieString appendString:excuteJSString];
            }
        }
        
        
        
    }
    return JSCookieString;
}

注意点:
1,通过WKUserScript
2,设置cookie格式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...
    无名感恩阅读 6,409评论 0 3
  • WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨...
    Aiana阅读 10,087评论 1 8
  • 转载:http://www.cnblogs.com/NSong/p/6489802.html 导语 WKWebVi...
    李小威阅读 10,296评论 8 9
  • 最近在学习WKWebView中的cookie方案,本来以为只是简单的设置一下就好了,参考了很多资料,发现里面的坑越...
    angry_zxy阅读 16,880评论 11 35
  • 假如我有超能力,我在每个人头上看到一个计数器——余下的人生里,我还能和他见多少次。 上班路上,大概会和数不清的两位...
    熊先生的香料阅读 3,106评论 4 1