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

Arv*_* Am 13 iphone ios

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

谢谢

Jos*_*phH 12

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

你的应用应该这样做:

  1. 使用启动移动游猎 [[UIApplication sharedApplication] openURL:url];
  2. URL应该是特殊的,例如. http://yourwebsite.com/give-ios-app-the-cookie
  3. 在您的网站上,当该网址启动时,发出重定向your-app-url-scheme:cookievalue=<somevalue> (例如angrybirds:cookievalue=hh4523523sapdfa)
  4. 当你的app delegate收到- (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中短暂显示"自动登录..."屏幕一秒或两秒.


Nic*_*ood 10

这实际上很难.

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

这可能看起来很奇怪,但它实际上是Facebook的共享登录系统如何工作,它允许应用程序和浏览器"打破"他们的沙箱并共享相同的唯一cookie ID.

当然,你不知道用户是否删除了cookie,除非你每次启动应用程序时都进行重定向,这可能会让人讨厌.

更新:

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