首页 > iOS9中『经浏览器唤起APP』的最佳实现方案是怎样的?

iOS9中『经浏览器唤起APP』的最佳实现方案是怎样的?

需求说明

某产品手机端网页、app均可使用,手机端网页的版本上需要有一个按钮来指引用户启用APP。
如果用户已经安装APP,点击后唤起APP并跳到这一页;
如果用户没有安装APP,点击后唤起appstore到此产品页面。


遇到的主要问题

无法判断用户是否安装APP,来采用何种跳转逻辑:

  1. iOS有原生的Smart Banner,可以帮助判断是否安装APP并跳转,但也仅限于safari浏览器,并且不可定制样式和跳转URL。需要通过schema来唤起app,因为需要带上具体的页面参数。

  2. 在比较旧的iOS版本里,业界有一个比较通用的办法,是可以通过iFrame尝试唤起APP,以一个时间差来判断用户手机里是否已安装,再来决定是否跳到appStore。
    然而最新的iOS中,这一套方案已经失效,iFrame不再有效果。

  3. 尝试过用setTimeout来首先直接唤起APP,然后再唤起appStore。这样的话,如果没有安装APP,会有一个难看的提示『该网址已经失效』,还需要手动X掉。
    尝试通过setTimeout来首先直接唤起APP,然后再跳转到另一个页面再唤起appStore。这样的话新页面虽然可以将『该网址已经失效』给顶掉,但是同时也会把正常唤起APP的提示『是否打开APP』也给顶掉。

  4. 如果用户是通过微信、qq等内置webview启动这一操作,那么提示用户启用safari打开并再走一次以上逻辑。有的APP可以直接通过微信qq判断并唤起,比如知乎?不知道此中是有友好协议,还是我并没有完全搞清楚原理,需要大家解答一下。


简单调查

简单调查了一下某些其他应用,发现大家并没有一套通用并完美的方案:

  1. 『知乎』及『网易云音乐』提供了两个入口,一个供跳转到APP,一个供跳转到appStore。未安装点击跳转到APP会有错误提示。

  2. 腾讯视频只有一个按钮,貌似是第一次点它会给你跳到appStore,此后再点它就会给你唤起APP。未安装点击会有错误提示。

  3. 简书则是直接唤起APP。未安装点击会有错误提示。


大体上就是这三类方案,可是始终没有一个满足最上面需求的完美方案。

公司里的人说我在这上面花太多的精力了-_-b
可是我不知道是我孤陋寡闻木有看到真正一个通用完美的方案,还是说就是iOS在这一块上没有做好,搞咱们这么难受来主推Safari?
个人觉得这种场景还是蛮常见的呀。


完美的办法就是用应用宝了。。


目前没有完美解决办法


你去查一下通用链接就好了。很简单


楼主不知道现在是否找到解决方法了。
和楼主一样的情况,在ios9中,直接用location.href没法判断到底是不是安装了app

目前只能退而求其次去给ios9增加一个弹窗。。。这样不会顶替打开app的提示。。。
缺点就是如果安装了app从app回来时候这个弹窗还在。。


在App中设置一下URlShame

如果你的手机上安装了改App就会直接打开,如果没有就直接下载

【热门文章】
【热门文章】