我需要通过 Safari(上下文令牌)设置一些上下文,然后从本机 iOS 应用程序中读取该上下文。这样做的最佳做法是什么?
到目前为止的一些想法:
- 在 HTML 5 数据库中设置上下文,但我不确定这是否可行,因为该数据库可能只能从 Safari 访问。在本机应用程序中使用 WebUIView 是否允许我访问与 Safari 相同的 HTML5 数据库/本地存储?
- 在设备存储中设置上下文,但我不确定这是否可行,因为我不知道 Safari 是否真的可以写入设备存储。
我会建议以下两个选项之一:
或者
通过将您的应用程序注册为协议处理程序,立即通过 URL 方案将上下文令牌传递给应用程序,请在此处查看更多信息
建议方式:
没有直接在 safari 和本机应用程序之间直接共享数据的最佳实践,而且您根本不应该这样做。每个应用程序的所有 cookie 和存储都被沙盒化,并且 safari 有自己的沙盒。
让您的服务器通过用户帐户完成工作是 imo 最好和最干净的方式这就是您拥有用户帐户的原因。如果您没有尝试使用协议处理程序来读取特定的 URL,我认为这也可以很方便。
您能否让应用程序在首次启动时点击一个由服务器托管的 URL,该 URL 在 safari 中重定向用户,并比较 IP 地址、时间、iOS 版本等以获得至少近似匹配?如果近似匹配不足,您可以在看到近似匹配时让您的应用打开 safari 以通过 cookie 确认其身份。
使用WebViewJavascriptBridge在 UIWebView 和您的本机之间发送消息很容易。
但是,在您的情况下,接受的答案建议使用自定义 URL 方案(直接从电子邮件到应用程序,安装后)是最有意义的。