如何在Safari和Native App之间共享上下文?

时间:2012-08-01 16:21:51

标签: ios html5 native

我需要通过Safari设置一些上下文(一个上下文令牌),然后从本机iOS应用程序中读取该上下文。这样做的最佳做法是什么?

到目前为止有几个想法:

  1. 在HTML 5数据库中设置上下文,但我不确定这是否可行,因为数据库可能只能从Safari访问。 在原生应用中使用WebUIView是否允许我访问与Safari相同的HTML5数据库/本地存储
  2. 在设备存储中设置上下文,但我不确定这是否有效,因为我不知道Safari是否可以实际写入设备存储。

2 个答案:

答案 0 :(得分:4)

我建议使用以下两个选项之一:

  • 让网络服务器在应用程序和网站上跟踪用户,例如通过创建用户帐户。

  • 通过将应用注册为协议处理程序,立即通过URL方案将上下文令牌传递给应用,请参阅更多信息here

    建议方式:

    1. 发送带有链接和上下文令牌的电子邮件,当用户点击链接时,在Safari中保存cookie中的上下文令牌,然后重定向到appstore以进行应用下载。
    2. 当用户下载应用并打开它时,为用户提供一个按钮,当用户点击它时,在Safari中打开一个网页。
    3. Safari使用上下文令牌加载cookie,然后使用URL方案触发另一个链接,例如yourAppName:// contextToken = 12345678。该链接将打开您的应用程序,该应用程序从URL中读取上下文令牌。

直接在safari和本机应用之间直接共享数据没有最佳做法,并且根本不打算这样做。所有cookie和存储都是沙盒为每个应用程序和safari有自己的沙箱。

让您的服务器通过用户帐户完成工作是最好和最干净的方式i.m.o.这就是您拥有用户帐户的原因。如果您没有尝试使用协议处理程序来读取特定的URL,那么我认为这也很方便。

答案 1 :(得分:1)

你是否可以让应用程序在首次启动时点击一个URL,该服务器在safari中重定向用户,并比较IP地址,时间,iOS版本等,以获得至少一个近似匹配?如果近似匹配不充分,您可以在看到大概匹配时,让您的应用程序打开safari以通过cookie确认其识别。