我希望能够唯一识别iPhone,以便我们的服务器可以使用一些自定义HTML进行响应。我希望能够在Safari和应用程序的嵌入式浏览器中识别手机。由于每个应用程序都是沙盒,因此cookie不起作用。
由于
答案 0 :(得分:12)
这不是直接可行的,但是在网站的配合下,尼克洛克伍德已经说过了,并且这是他描述的方法的大大扩展版本:
您的应用应该这样做:
[[UIApplication sharedApplication] openURL:url];
http://yourwebsite.com/give-ios-app-the-cookie
your-app-url-scheme:cookievalue=<somevalue>
发出重定向(例如angrybirds:cookievalue=hh4523523sapdfa
)- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
处理网址以获取Cookie值请注意,您不应该在应用程序启动时自动执行此操作 - 用户将看到转移到Mobile Safari并返回,这不是一个良好的用户体验,Apple将拒绝您的应用程序(Apple也认为这是&# 34;未经用户事先同意将用户的个人数据上传到服务器&#34;)。
最好是回应用户,关注用户体验 - 例如。等待用户点击&#34;登录&#34;按钮,然后执行此操作,如果用户未登录您的网站,http://yourwebsite.com/give-ios-app-the-cookie应向用户显示Safari中的登录屏幕。如果用户已登录,您可以简要地显示一个&#34;自动登录...&#34;在重定向用户之前,在Safari中屏幕显示一两秒钟。
答案 1 :(得分:10)
这实际上很难。
您可以对应用进行编程,以便在首次打开时启动Mobile Safari并设置Cookie,然后使用自定义网址方案重定向回应用。
这可能看起来很奇怪,但它实际上是Facebook的共享登录系统如何工作,它允许应用程序和浏览器“打破”他们的沙箱并共享相同的唯一cookie ID。
当然你不知道用户是否删除了cookie,除非你每次启动应用程序时都进行重定向,这可能会让人讨厌。
更新:
从iOS 9开始,您现在可以在应用内使用SFSafariViewController
打开该页面,而不是重定向到Safari应用。这仍然有点笨重,但可能比双应用程序切换更可取。