适用于iOS的移动Safari和应用程序的唯一标识符

时间:2012-02-08 16:19:09

标签: iphone ios

我希望能够唯一识别iPhone,以便我们的服务器可以使用一些自定义HTML进行响应。我希望能够在Safari和应用程序的嵌入式浏览器中识别手机。由于每个应用程序都是沙盒,因此cookie不起作用。

由于

2 个答案:

答案 0 :(得分:12)

这不是直接可行的,但是在网站的配合下,尼克洛克伍德已经说过了,并且这是他描述的方法的大大扩展版本:

您的应用应该这样做:

  1. 使用[[UIApplication sharedApplication] openURL:url];
  2. 启动移动版Safari
  3. 网址应该是特殊的,例如。 http://yourwebsite.com/give-ios-app-the-cookie
  4. 在您的网站上,启动该网址后,向your-app-url-scheme:cookievalue=<somevalue>发出重定向(例如angrybirds:cookievalue=hh4523523sapdfa
  5. 当您的应用代表收到- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation处理网址以获取Cookie值
  6. 请注意,您不应该在应用程序启动时自动执行此操作 - 用户将看到转移到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应用。这仍然有点笨重,但可能比双应用程序切换更可取。