【问题标题】:Unique Identifier for both mobile safari and in app in iOSiOS 中移动 safari 和应用程序中的唯一标识符
【发布时间】:2012-02-08 16:19:08
【问题描述】:

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

谢谢

【问题讨论】:

  • 您能否澄清“唯一标识”的含义 - 您的意思是您希望能够知道同一部手机何时通过应用程序或 Mobile Safari 访问您的网站?
  • 是的,我想知道手机何时在应用程序或移动浏览器中访问我们的网站

标签: iphone ios


【解决方案1】:

这不是直接可能的,但在网站的合作下,正如尼克洛克伍德所说,这是可能的,这是他描述的方法的一个大大扩展的版本:

您的应用应该这样做:

  1. 使用[[UIApplication sharedApplication] openURL:url];启动移动Safari
  2. URL 应该是一个特殊的,例如。 http://yourwebsite.com/give-ios-app-the-cookie
  3. 在您的网站上,当该 URL 启动时,发出重定向到 your-app-url-scheme:cookievalue=<somevalue>(例如 angrybirds:cookievalue=hh4523523sapdfa
  4. 当您的应用代理收到- (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 中短暂显示“自动登录...”屏幕一两秒,然后将用户重定向回来。

【讨论】:

    【解决方案2】:

    这其实很难。

    您可以对应用程序进行编程,使其在首次打开并设置 cookie 时启动 Mobile Safari,然后使用自定义 URL 方案重定向回应用程序。

    这可能看起来很奇怪,但实际上这就是 Facebook 共享登录系统的工作方式,它允许应用程序和浏览器“突破”它们的沙盒并共享相同的唯一 cookie ID。

    当然,除非您在每次应用启动时都进行重定向,否则您不会知道用户是否删除了 cookie,这可能会很烦人。

    更新:

    从 iOS 9 开始,您现在可以在应用内使用 SFSafariViewController 打开页面,而不是重定向到 Safari 应用。这仍然有点笨拙,但可能比双应用切换更可取。

    【讨论】:

    • 好主意,但根据stackoverflow.com/questions/8636202/…,默认情况下,移动 Safari 中禁用了 cookie。我有什么问题吗(请原谅我的新手问题,我是 iOS 开发的真正新手)?
    • 第三方 cookie 被禁用,但第一方(与您所在页面来自同一域的)默认启用。
    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 2010-09-18
    • 2013-11-28
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多