現在、WKWebView を使用して Web ページを表示するハイブリッド アプリケーションに問題があります。
アプリケーションが再起動して新しいセッション / WKWebWiew を作成した後、Web サービスから WKWebView に新しいログイン Cookie が与えられます。これは 3 回の試行のうち 2 回は正常に機能しますが、場合によっては、ログイン Cookie が WKWebView によって使用される共有 Cookie ストレージ (NSHTTPCookieStorage) に保存されません。
(UIWebview で同じ Web サービスを使用すると正常に動作します)
ネットワーク分析ツールを試してみましたが、Web サービスが新しい Cookie を送信していることがわかります。何らかの理由で、WKWebView / NSURLRequest は更新されたログイン Cookie を保存しません。WKWebView はスケジュールされた間隔で Cookie を更新するようであり、WKProcessPool を更新することで強制的に更新できることを読みましたが、成功しませんでした。
以下を使用して、Web サービスからログイン Cookie を読み取ろうとしています。
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
...
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)navigationResponse.response;
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:urlResponse.allHeaderFields forURL:urlResponse.URL];
...
しかし、何らかの理由でセッション Cookie / ログイン Cookie がヘッダーに表示されず、次のように設定して自動 Cookie 処理をオフにすると表示されるため、何らかの理由で NSURL によって非表示になっていると推測されます。
<NSMutableURLRequest>.HTTPShouldHandleCookies
しかし、それは私に他の多くの問題を与えます...
誰かに同様の問題や入力がありましたか?