iPhone应用程序可以读取以前由Safari Mobile存储的cookie吗?
要真正回答你的问题:
没有.
SDK应用无法访问Mobile Safari的Cookie.每个SDK应用程序都有自己的WebKit缓存和cookie存储,因此虽然cookie将保留在同一个应用程序中,但它们不能在应用程序之间访问.
从iOS 9开始,这是可能的!
使用sfSafariViewController.
您需要设置:
应用中的自定义网址方案,用于接收Cookie数据.
您从中获取Cookie的网站需要实施特定于您应用的自定义网址方案的API,以重定向回您的应用.
你可以克隆这个具有完整工作演示的repo.
希望这可以帮助,
利亚姆
如果您可以访问服务器URL,实际上有一种有趣的方式.
在您的应用中,使用移动版Safari启动服务器网址.
目标服务器URL读取cookie并重定向回特定于应用程序的URL(myapp:// cookie = 123)
然后切换回应用程序,您可以从URL处理程序中读取该值
这有点hacky,因为该应用程序将切换移动Safari,然后立即切换回应用程序.但是,这是可能的.
请注意,在iOS 8上,您可能更好地使用Safari密码共享来解决导致此问题的一些用例.
这不是直接可行的,但通过网站的合作,这是可能的.
为了澄清,用户案例是Objective C应用程序想要读取由移动safari中的网站设置的cookie的值.(特别是UIWebView没有参与设置cookie)
你的应用应该这样做:
使用[[UIApplication sharedApplication] openURL:url]启动移动safari;
URL应该是特殊的,例如.http://yourwebsite.com/give-ios-app-the-cookie
在您的网站上,当该网址启动时,请向您的-app-url-scheme发出重定向:cookievalue =(例如,angrybirds:cookievalue = hh4523523sapdfa)
当你的app委托收到 - (BOOL)应用程序:(UIApplication*)应用程序openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation处理url获取cookie值
请注意,您不应该在应用程序启动时自动执行此操作 - 用户将看到转移到Mobile Safari并返回,这不是一个良好的用户体验,Apple将拒绝您的应用程序(Apple也认为这是"上传用户的个人数据"没有事先同意的服务器").最好是回应用户,关注用户体验 - 例如.等待用户点击"登录"按钮,然后执行此操作,如果用户未登录您的网站,http://yourwebsite.com/give-ios-app-the-cookie应该向用户显示登录信息野生动物园内的屏幕.如果用户已登录,您可以在重定向用户之前在Safari中短暂显示"自动登录..."屏幕一秒或两秒.
当然没有办法让它与hotmail/gmail/etc一起使用 - 它需要是你自己的网站.
对于移动safari和iOS中的应用程序,可以使用Unique Identifier来建议这种方法.