Это правильный способ настроить внедрение cookie, а затем перезагрузить WKWebView?

В моей ситуации, сначала в конфигурационный файл cookie вставка, а затем создание WKWebView работает нормально, cookie был введен.

Мне нужно добавить новый файл cookie после загрузки веб-просмотра. но почему-то, похоже, не удалось.

Вот пример кода:

1. Создать веб-просмотр

- (WKWebView *)webView {
if (!_webView) {
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    configuration.userContentController = [WKUserContentController new];
    configuration.preferences = [WKPreferences new];
    configuration.preferences.javaScriptEnabled = YES;

    _webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
    _webView.scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
    [_webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];

    for (NSString *msgName in self.msgNames) {
        [configuration.userContentController addScriptMessageHandler:self name:msgName];
    }
}
return _webView; }

2. Конфигурация печенья

- (void)configCookieInjection {
NSMutableString *cookieSource = [NSMutableString string];
for (NSHTTPCookie *cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies) {
    [cookieSource appendFormat:@"document.cookie = '%@=%@';", cookie.name, cookie.value];
}
if (cookieSource.length > 0) {
    [self.webView.configuration.userContentController removeAllUserScripts];
    WKUserScript *cookieInjectionScript = [[WKUserScript alloc]
                               initWithSource:cookieSource
                               injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
    [self.webView.configuration.userContentController addUserScript:cookieInjectionScript];
} }

3.Вход и повторный ввод , в методе делегата входа

- (void)userLoginRegisterSuccessOperationType:(JCUserOperationType)type info:(JCUserLoginResponseModel *)info {
  [self configCookieInjection];
  [self.webView reload]; }

Я делаю что-то неправильно?

В чем разница между добавлением файлов cookie в HTTPRequestHeaders и Inject to webView?

0 ответов

Другие вопросы по тегам