当前位置:  开发笔记 > IOS > 正文

如何清除SFSafariViewController凭据?

如何解决《如何清除SFSafariViewController凭据?》经验,为你挑选了1个好方法。

我在Swift 2中使用SFSafariViewController在带有ios 9.1(13B143)的iPad Air 2上显示网页.每个网页都需要用户提供的凭据.但是,当用户按下注销按钮时,我需要清除这些凭据.我尝试过使用以下内容:

  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上的应用程序并重新安装它,当我导航回网址时,凭据仍然被缓存.我发现清除凭据的唯一方法是关闭iPad并重新启动它.

问题:如何以编程方式清除凭据?



1> astidham2003..:

所以我就此开了一个Apple"技术支持事件".以下是他们答案的摘要:SFSafariViewController在我的App的进程之外运行,为了安全,我的App无法修改SFSafariViewController的状态.换句话说,我的应用程序无法清除SFSafariViewController存储的凭据.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有