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



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

到目前为止有几个想法:

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

我建议这两个选项之一:

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

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

    建议方式:

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

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

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

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

使用WebViewJavascriptBridge可以很容易地在UIWebView和您的原生up之间发送消息。

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

最新更新