web-dev-qa-db-ja.com

UIWebViewのすべてのCookieを削除する方法は?

私のアプリケーションには、ログイン用にlinkedin認証ページをロードするUIWebviewがあります。ユーザーがログインすると、Cookieがアプリケーションに保存されます。

私のアプリには、linkedinログインに関連しないログアウトボタンがあります。したがって、ユーザーがこのボタンをクリックすると、アプリからログオフします。ユーザーが完全にログアウトできるように、このログオフでアプリからもリンクインCookieがクリアされるようにします。

91
Vaibhav Saran

この質問 によると、次のように「Cookie Jar」の各Cookieを調べて削除できます。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies]) {
   [storage deleteCookie:cookie];
}
[[NSUserDefaults standardUserDefaults] synchronize];
209
Sergio Moura

これに関する情報を追加したかっただけです。

OS X 10.9/iOS 7以降では、次を使用できます- -resetWithCompletionHandler: アプリ全体のCookieやキャッシュなどをsharedSessionからクリアするには:

すべてのCookie、キャッシュ、および資格情報ストアを空にし、ディスクファイルを削除し、進行中のダウンロードをディスクにフラッシュし、将来の要求が新しいソケットで発生するようにします。

[[NSURLSession sharedSession] resetWithCompletionHandler:^{
    // Do something once it's done.
}];

for-InループdeleteCookie:は、コレクションを列挙している間にmodifyingのように聞こえます。 (わからない、悪い考えかもしれない?)

8
Cai

WebViewのhtml内で、Cookieを消去する関数を作成できます。

クリーニングを1回だけ行う必要がある場合は、Titaniumイベントで、アプリの起動時にのみこの機能をトリガーできます。

1
jack kallis

Swift Solution:

    let storage = HTTPCookieStorage.shared
    if let cookies = storage.cookies{
        for cookie in cookies {
             storage.deleteCookie(cookie)
        }
    }
0