0

ユーザーがログインしている間、セッションオブジェクトと通信するオンラインバックエンドサーバーとのユーザーのWebセッションを維持しているサブクラス化されたUIWebViewではかなり疑わしい問題があります。特定のサービス。時々、私のアプリはGDCを持つバックグラウンドスレッドでデータ更新サービスを実行し、NSURLSessionDataTaskを使用してバックエンドリクエストを実行します。NSURLSessionDataTask異なるスレッドでUIWebViewのセッションCookieを破棄します

バックグラウンドスレッドの作業によって、UIWebViewによって管理されているWebセッションオブジェクトが壊れてしまいます。私の理解では、それはNSHTTPCookieStorageが壊れてしまうことを意味します...私はこれを正確には知らない。

UIWebViewによって管理されているセッションが他のスレッドで実行されているNSURLSessionDataTaskによって実行された他の要求と共有される場合は、役立つと思います。

以前は、UIWebViewセッションがアクティブな間にNSURLSessionDataTaskの呼び出しを抑制しましたが、状況によってはこれらの呼び出しの1つが引き続き発生するようです。

質問:UIWebViewで使用されているのと同じセッションスペースをNSURLSessionDataTaskアクティビティと共有するにはどうすればよいですか?両方の実装の複雑さに、私はで... NSURLSessionDataTaskのために使用されるWebセッションとして[NSURLSessionConfiguration defaultSessionConfiguration]を呼び出すことのUIWebViewのデータに侵入していること、それは主に思える...

+0

Cookieストレージが破損していませんか?前回のNSHTTPCookieStorage.sharedHTTPCookieStorage.cookiesの配列を比較しましたか(まだ動作しているか)、後で比較しましたか? – izerik

+0

@izerik、私はそれをテストした後、グローバルキューのNSHTTPCookieStorage.sharedHTTPCookieStorage.cookiesは、この配列のメインスレッドの値がUIWebViewで使用されている間、正しいデータを持っていました。私は共有ストレージが同じデータを提供する必要があるシングルトンだと思ったので、それは奇妙でした...多分それはスレッドセーフではないのですか? – konran

答えて

0

をサンプルコードを供給することはできません残念ながら

、少なくともそれは壊れてしまい、もはや使用できなくなります。

代わりに[NSURLSessionConfiguration ephemeralSessionConfiguration]を使用すると、トリックとUIWebViewのデータはそのまま維持されます。

関連する問題