NSHTTPCookieStorage是否跨应用程序持久化?

4

我很好奇NSHTTPCookieStorage是否跨应用程序持久存在,还是仅限于当前应用程序。 我希望在搜索应用程序中可以访问在另一个应用程序中收集的某些cookie。它是这样工作的吗?谢谢!

PS:此问题涉及iPhone或iPad。

3个回答

6

对于iOS来说,cookie不能在不同的应用程序之间共享。根据苹果的文档

iOS注意事项:在iOS中,cookie不能在不同的应用程序之间共享。


你知道有什么方法可以实现这个吗?我尝试将Cookie存储保存到UserPrefs中,但似乎不起作用。我只需要让它们全局化。完成后,我会手动删除它们... - gabaum10
如果你想要分享在其他应用(包括你没有编写的应用中)收集的 cookie,我认为这是不可能的。即使你设法全局保存 cookie 存储,所有其他应用也需要做同样的事情。苹果不支持应用之间的通信;它们都被分配到各自的安全沙盒。你可以尝试在搜索应用程序中注册一个自定义的 URL 处理器,并在具有 cookie 的应用程序中将数据编码成自定义的 URL。详见 http://j.mp/WjLQu 了解更多相关信息。 - Greg
我找到了一个解决方法。基本上,我只是通过URL方案传递了凭据,并重新联系服务器以重新验证凭据。这很丑陋,也不是非常高效,但它可以工作,并且完全不会改变用户体验。感谢您的帮助! - gabaum10

1

创建了一个解决方法,只需将凭据传递给新应用程序并重新连接到服务器。虽然不是很高效,但在找到更好的解决方案之前可以通过...


0

正如Greg所说,不行。每个应用程序的cookie存储都是沙盒化的。


解决这个问题的方法是使用 iOS9 中新引入的 SFSafariViewController
这种 WebView 的实现方式没有沙盒限制,并且可以访问 Safari 的 cookie 存储。这意味着两个不同的应用程序都可以使用它来访问 Safari 的 cookie 存储中相同的 cookie。
您需要编写一个小型 Web 服务来处理 cookie 的写入,以及某种 API 来将 cookie 数据重定向回应用程序。 使用此项目 作为起点。它向您展示了如何在用户无需进行任何操作的情况下从应用程序中访问 Safari cookie。
希望这可以帮到您, Liam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接