WKWebViewを使用してファイルを取得するにはどうすればいいですか? 質問する

WKWebViewを使用してファイルを取得するにはどうすればいいですか? 質問する

ダウンロードしたいファイル (CSV) があります。それは、Web サイトのログイン画面の背後にあります。WKWebViewユーザーがログインできるようにし、ログイン後にアプリでファイルをダウンロードできるようにしたいと考えていました。

ユーザーが Web サイトにログインした後、外部でファイルをダウンロードしようとしましたWKWebViewが、目的のファイルではなくログイン フォームを含む HTML ドキュメントがダウンロードされるため、セッション データはサンドボックス化されているようです。

WKUserScriptオブジェクトに を追加しようとしましたWKUserContentControllerが、HTML 以外のファイルが読み込まれたときにスクリプトが実行されません。

ユーザーが 経由でログインできるようにしながら、このファイルにアクセスする方法はありますかWKWebView?

ベストアンサー1

現在、WKWebView インスタンスは、デフォルトのネットワーク ストレージ (NSURLCache、NSHTTPCookieStorage、NSCredentialStorage) と、ネットワーク要求をカスタマイズするために使用できる標準のネットワーク クラス (NSURLProtocol など) を無視します。

したがって、WKWebView インスタンスの Cookie はアプリの標準 Cookie ストレージに保存されず、標準 Cookie ストレージのみを使用する NSURLSession/NSURLConnection は WKWebView の Cookie にアクセスできません (おそらくこれが、発生している問題です。「ログイン ステータス」はおそらく Cookie に保存されますが、NSURLSession/NSURLConnection は Cookie を認識しません)。

キャッシュや資格情報などについても同様です。WKWebView には独自のプライベート ストレージがあるため、標準の Cocoa ネットワーク クラスとはうまく連携しません。

また、NSURLProtocol は WKWebView ではサポートされていないため、リクエストをカスタマイズしたり (独自のカスタム HTTP ヘッダーを追加したり、既存のヘッダーを変更したり)、独自のカスタム URL スキームを使用したりすることもできません。

したがって、現時点では、WKWebView は Cocoa の標準ネットワーク API に参加していないため、多くのアプリではほとんど役に立ちません。

私は、iOS 8 がリリースされるまで Apple がこれを変更してくれることを依然として望んでいます。そうしないと、WKWebView は多くのアプリで役に立たなくなり、おそらくもう少しの間 UIWebView を使い続けることになるからです。

したがって、バグレポートを Apple に送信して、これらの問題が深刻であり、修正する必要があることを Apple に知らせてください。

おすすめ記事