9

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

到目前为止的一些想法:

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

3 回答 3

4

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

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

或者

  • 通过将您的应用程序注册为协议处理程序,立即通过 URL 方案将上下文令牌传递给应用程序,请在此处查看更多信息

    建议方式:

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

没有直接在 safari 和本机应用程序之间直接共享数据的最佳实践,而且您根本不应该这样做。每个应用程序的所有 cookie 和存储都被沙盒化,并且 safari 有自己的沙盒。

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

于 2012-08-01T16:47:11.550 回答
1

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

于 2012-08-01T16:46:32.960 回答
-1

使用WebViewJavascriptBridge在 UIWebView 和您的本机之间发送消息很容易。

但是,在您的情况下,接受的答案建议使用自定义 URL 方案(直接从电子邮件到应用程序,安装后)是最有意义的。

于 2012-09-19T00:33:54.153 回答