iPhone 应用程序能否读取之前由 Safari Mobile 存储的 cookie?
iPhone xcode 应用程序能否读取之前由 Safari Mobile 存储的 cookie?
要实际回答您的问题:
不。
无法从 SDK 应用程序访问 Mobile Safari 的 cookie。每个 SDK 应用程序都有自己的 WebKit 缓存和 cookie 存储,因此虽然 cookie 将保留在同一个应用程序中,但它们无法在应用程序之间访问。
如果您有权访问服务器 url,实际上有一种有趣的方式。
- 在您的应用程序中,使用 mobile safari 启动服务器 url。
- 目标服务器 url 读取 cookie 并重定向回应用程序特定 url (myapp://cookie=123)
- 然后应用程序切换回来,您可以从 url 处理程序中读取该值
这有点麻烦,因为该应用程序会切换移动 safari,然后立即切换回该应用程序。但是,这是可能的。
请注意,在 iOS 8 上,您可能最好使用Safari 密码共享来解决一些导致此问题的用例。
这不是直接可能的,但通过网站的合作是可能的。
澄清一下,用户案例是一个 Objective C 应用程序想要读取一个网站在移动 safari 中设置的 cookie 的值。(即,特别是 UIWebView 没有参与设置 cookie)
你的应用应该这样做:
- 使用 [[UIApplication sharedApplication] openURL:url] 启动移动 safari;
- URL 应该是一个特殊的,例如。http://yourwebsite.com/give-ios-app-the-cookie
- 在您的网站上,当该 url 启动时,发出重定向到 your-app-url-scheme:cookievalue= (例如,angeredbirds:cookievalue=hh4523523sapdfa)
- 当您的应用程序委托接收 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 处理 url 以获取 cookie 值
请注意,您不应在应用程序启动时自动执行此操作 - 用户会看到传输到 Mobile Safari 并返回,这不是一个好的用户体验,Apple 将拒绝您的应用程序(Apple 也认为这是“上传用户的个人数据”未经他们事先同意而向服务器发送”)。最好是响应用户,注意用户体验 - 例如。等待用户点击“登录”按钮,然后执行此操作,如果用户未登录到您的网站,则http://yourwebsite.com/give-ios-app-the-cookie应向用户显示登录信息Safari 中的屏幕。如果用户已登录,您可以在 Safari 中短暂显示“自动登录...”屏幕一两秒钟,然后再将用户重定向回来。
当然,没有办法让它与 hotmail/gmail/etc 一起工作——它需要是你自己的网站。
归功于移动 safari 和 iOS 应用程序中的Unique Identifier提出了这种方法。
由于 iPhone 上的沙盒,您无法访问 Safari 的 cookie。您只能访问在您的应用程序中创建的 cookie - 例如通过 UIWebView。