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

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

到目前为止的一些想法:

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

我会build议这两个选项之一:

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

要么

  • 通过将应用程序注册为协议处理程序,通过URLscheme立即将上下文标记传递给应用程序, 在此处查看更多信息

    build议的方法:

    1. 用链接和上下文令牌发送电子邮件,当用户单击链接时,在Safari中的cookie中保存上下文令牌,然后redirect到appstore进行应用程序下载。
    2. 当用户下载应用程序并打开它时,为用户提供一个button,当用户点击它时,在Safari中打开一个网页。
    3. Safari使用上下文标记加载cookie,然后使用类似yourAppName:// contextToken = 12345678的URLscheme触发另一个链接。 链接将打开您的应用程序,从URL读取上下文令牌。

直接在Safari和本地应用程序之间直接共享数据没有最佳做法,而且这并不意味着您应该这样做。 所有cookies和存储都为每个应用程序沙盒,Safari浏览器有自己的沙箱。

让您的服务器通过用户帐户来完成这项工作是最好,最干净的方式imo这就是为什么你有用户帐户。 如果您没有尝试使用协议处理程序来阅读特定的URL,那么也可以让我觉得很方便。

您可以让应用程序首次启动由服务器托pipe的redirectSafari中的用户的URL,并比较IP地址,时间,iOS版本等,以获得至less一个近似匹配? 如果近似匹配不足,则可以在看到近似匹配时,让您的应用程序打开Safari浏览器以通过Cookie确认其身份。

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

在你的情况,虽然,接受的答案build议使用自定义URLscheme(直接从电子邮件到应用程序,安装后)是最有意义的。