NSURLConnection 上的 sharedContainerIdentifier?

问题描述

我正在向 iOS 应用添加小部件扩展。 Widget 需要进行网络调用,共享在主应用程序登录过程中设置的 cookie。 NSURLconfigurationsharedContainerIdentifier 非常适合这种情况。由于我们已经在使用应用组,因此很容易实现。

主应用程序主要位于 NSURLSession,但有一些旧的 NSURLConnection 代码。是否存在将 NSURLConnectionsharedContainerIdentifier 结合使用的机制?

解决方法

我能想到三种方法:

  1. 您可以使用 +[NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier:] 获取共享 cookie 存储,然后使用在共享(全局)协议命名空间中注册的自定义 NSURLProtocol 子类自行管理 cookie。在该自定义协议中,从响应中提取任何新 cookie 并将任何匹配的 cookie 注入请求中。然后标记请求(这样您就不会处理它们两次)并将它们传递回 NSURLConnection 机器。

  2. 您可以执行上述操作,但不是在共享 cookie jar 中管理 cookie,而是使用 NSURLSession 在配置了共享容器标识符的会话中发出请求。

  3. 您可以混合 NSURLConnection 方法并将其替换为 NSURLSession 调用。

除非涉及第三方封闭源代码库,否则这些方法都不可能比更新代码并将其转换为使用 NSURLSession 更容易。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...