2010-06-30 100 views
5

我有一个网站和一个本地iphone应用程序。应用程序注册一个自定义协议。我希望网站在适当的时候自动重定向到协议,但只有当用户安装了应用程序时(以避免恼人的对话)。这意味着我需要从应用程序中编写一些可以在移动Safari中阅读的状态,以将应用程序标记为已安装。饼干似乎不存在交叉过程。我还有其他地方可以储存我的标记吗?iPhone应用程序和移动Safari浏览器之间是否有共享状态?

回答

4

看看this博客文章,了解苹果是如何为Mobile Me Gallery应用程序做的。它涉及到应用程序在Safari中打开一个网站(在您的服务器上),它将一个'App Installed'Cookie加载到Safari中。

3

回到这个问题后,我发现了另一个部分解决方案。事实证明,无效的协议对话框不会像阻止警告一样阻止JavaScript执行。

所以,这里是如何启动从Web应用程序时,你处理回退:

  • 注册一个setTimeout的处理程序重定向到后,说回退页(含window.location.replace),500毫秒
  • 注册如果安装了应用程序,取消超时
  • 打开的网址与你的自定义协议
  • 一个的onblur处理程序,浏览器会打开应用程序,模糊了网页,并取消后备
  • 如果没有安装该应用程序,用户将只能看到最多500毫秒的对话框他们接走后备页面

其实我喜欢这更好,因为之前同时,一方面人没有应用有时会在网站上闪现对话,另一方面,它不会影响应用程序的首次启动体验。在huntaub的回答中描述的技术会在应用首次推出时引起一对分散注意的过渡和移动Safari的闪光。

相关问题