需求说明
某产品手机端网页、app均可使用,手机端网页的版本上需要有一个按钮来指引用户启用APP。
如果用户已经安装APP,点击后唤起APP并跳到这一页;
如果用户没有安装APP,点击后唤起appstore到此产品页面。
遇到的主要问题
无法判断用户是否安装APP,来采用何种跳转逻辑:
iOS有原生的Smart Banner,可以帮助判断是否安装APP并跳转,但也仅限于safari浏览器,并且不可定制样式和跳转URL。需要通过schema来唤起app,因为需要带上具体的页面参数。
在比较旧的iOS版本里,业界有一个比较通用的办法,是可以通过iFrame尝试唤起APP,以一个时间差来判断用户手机里是否已安装,再来决定是否跳到appStore。
然而最新的iOS中,这一套方案已经失效,iFrame不再有效果。尝试过用setTimeout来首先直接唤起APP,然后再唤起appStore。这样的话,如果没有安装APP,会有一个难看的提示『该网址已经失效』,还需要手动X掉。
尝试通过setTimeout来首先直接唤起APP,然后再跳转到另一个页面再唤起appStore。这样的话新页面虽然可以将『该网址已经失效』给顶掉,但是同时也会把正常唤起APP的提示『是否打开APP』也给顶掉。如果用户是通过微信、qq等内置webview启动这一操作,那么提示用户启用safari打开并再走一次以上逻辑。有的APP可以直接通过微信qq判断并唤起,比如知乎?不知道此中是有友好协议,还是我并没有完全搞清楚原理,需要大家解答一下。
简单调查
简单调查了一下某些其他应用,发现大家并没有一套通用并完美的方案:
『知乎』及『网易云音乐』提供了两个入口,一个供跳转到APP,一个供跳转到appStore。未安装点击跳转到APP会有错误提示。
腾讯视频只有一个按钮,貌似是第一次点它会给你跳到appStore,此后再点它就会给你唤起APP。未安装点击会有错误提示。
简书则是直接唤起APP。未安装点击会有错误提示。
大体上就是这三类方案,可是始终没有一个满足最上面需求的完美方案。
公司里的人说我在这上面花太多的精力了-_-b
可是我不知道是我孤陋寡闻木有看到真正一个通用完美的方案,还是说就是iOS在这一块上没有做好,搞咱们这么难受来主推Safari?
个人觉得这种场景还是蛮常见的呀。
你去查一下通用链接就好了。很简单