iPhone应用程序和移动Safari之间是否存在共享状态?

5

我有一个网站和一个本地的iPhone应用程序。该应用程序注册了自定义协议。我希望网站在适当的时候自动重定向到该协议,但仅当用户安装了该应用程序时才会这样做(以避免出现烦人的对话框)。这意味着我需要从应用程序中写入一些状态,以便我可以在移动Safari中读取它来标记应用程序已安装。跨进程,Cookie 似乎不存在。是否还有其他地方可以存储我的标记?

2个回答

4

请查看这篇博客文章,了解苹果是如何为Mobile Me Gallery应用程序完成此操作的。它涉及应用程序在Safari中打开一个网站(位于您的服务器上),该网站会将“已安装应用程序”cookie加载到Safari中。


3
在回到这个问题后,我找到了另一个部分解决方案。原来无效协议对话框不像警告框那样阻止JavaScript执行。
因此,以下是从Web启动应用程序时如何处理回退的方法:
- 注册一个setTimeout处理程序,在500毫秒后重定向到回退页面(使用window.location.replace) - 注册一个onBlur处理程序,取消超时 - 打开自定义协议的URL - 如果应用已安装,则浏览器将打开应用程序,模糊页面并取消回退 - 如果应用未安装,则用户在看到对话框最多500毫秒后就会被带到回退页面
实际上,我更喜欢这个方法,因为一方面没有应用程序的人有时会在站点上看到对话框的闪光,另一方面它不影响应用程序的首次启动体验。 huntaub答案中描述的技术会在应用程序首次启动时产生一对令人分心的过渡和移动版Safari的闪光。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接