1

我知道SFSafariViewController有私人cookie存储和其他实现。但是,我知道我们可以为每个(每个本地系统)Swift类编写一个扩展。 我需要与本机Safari共享cookie,或者从我的应用程序打开Safari,并附带一些标题请求。至少,如何创建获取/设置Cookie的API? SFSafariVC和原生的Safari之间与Safari同步 - SFSafariViewController的扩展

回答

3
  1. 曲奇共享已在IOS被禁用> = 11

在WWDC,苹果announced a change在Safari视图控制器的与iOS 11的行为中存储的数据( cookies,本地存储等)将不再在Safari View Controller的实例之间共享。我们已经在内部证实了这个测试版本,这似乎是Branch的人员的independently confirmed

从AppAuth未-IOS”回购:用户whitehatguy

  • 为SFSafariVC唯一API是对于给定的URL建立一个新的实例。您无法设置或修改Cookie。
  • 如果需要执行自定义代码,看看WKWebView(iOS版> = 8)/ UIWebView(iOS版< 8)。有用的答案:Getting cookies in WKWebView

    SFAuthenticationSession创建为允许SSO/OAuth身份验证流程,它与本机Safari共享Cookie,但开发人员无法直接访问。

    在Safari和应用程序之间管理共享一次性Web服务登录以及Cookie和网站数据的类,该类还可用于其他关联应用程序的自动登录。

    在两种情况下,你会使用SFAuthenticationSession是:

    • 登录到使用的身份验证协议(如OAuth的)第三方的服务。此选项适用于社交网络应用程序。
    • 为应用程序提供单点登录(SSO)体验。此选项适用于在同一设备上安装了多个应用程序的企业公司。

    SFAuthenticationSession的文档由苹果

    +0

    好,非常感谢,但我还是不明白答案#2:为什么我们不能写一个扩展与一些私有方法/属性工作? – slesher

    +0

    您无法访问私有API。即使你可以,你的应用永远不会通过App Store的批准。即使如此,如上所述,SFSafariVC甚至不与本机Safari共享cookie(*)。 – nathan

    +0

    好的,那么你有什么建议/解决方法如何达到这个目标?我可以为此写一个扩展名吗?这是连接:https://stackoverflow.com/questions/45652212/find-out-the-urlrequest-of-wkwebview – slesher