7

Swift 2 で SFSafariViewController を使用して、ios 9.1 (13B143) を搭載した iPad Air 2 で Web ページを表示しています。各 Web ページには、ユーザーからの資格情報が必要です。ただし、ユーザーがログアウト ボタンを押したときに、それらの資格情報をクリアする必要があります。私は以下を使用してみました:

  let allCreds = NSURLCredentialStorage.sharedCredentialStorage().allCredentials
    for (protectionSpace, userCredsDict) in allCreds {
        for (_, cred) in userCredsDict {
            print("DELETING CREDENTIAL")
            NSURLCredentialStorage.sharedCredentialStorage().removeCredential(cred, forProtectionSpace: protectionSpace, options: ["NSURLCredentialStorageRemoveSynchronizableCredentials" : true])
        }

    }
    // Clear cookies
    if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies {
        for (cookie) in cookies {
            print("DELETING COOKIE")
            NSHTTPCookieStorage.sharedHTTPCookieStorage().deleteCookie(cookie)
        }
    }

    // Clear history
    print("CLEARING URL HISTORY")
    NSURLCache.sharedURLCache().removeAllCachedResponses()
    NSUserDefaults.standardUserDefaults().synchronize()

しかし、うまくいきません。実際、「DELETING CREDENTIAL」と「DELETING COOKIE」は印刷されません。さらに、iPad からアプリを完全に削除して再インストールすることもできます。Web URL に戻っても資格情報はキャッシュされたままです。資格情報をクリアする唯一の方法は、iPad をシャットダウンして電源を入れることです。

質問: プログラムで資格情報をクリアするにはどうすればよいですか?

4

1 に答える 1

13

そこで、これについて Apple の「テクニカル サポート インシデント」を開始しました。彼らの答えの要約は次のとおりです。つまり、私のアプリは SFSafariViewController によって保存された資格情報をクリアできません。

于 2015-12-07T14:35:50.417 に答える