javascript - iOS9中『经浏览器唤起APP』的最佳实现方案是怎样的?
怪我咯
怪我咯 2017-04-10 17:53:45
[JavaScript讨论组]

需求说明

某产品手机端网页、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?
个人觉得这种场景还是蛮常见的呀。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
怪我咯

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

黄舟

目前没有完美解决办法

怪我咯

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

伊谢尔伦

在App中设置一下URlShame

  • (BOOL)application:(UIApplication )application handleOpenURL:(NSURL )url
    {
    if([[url scheme] isEqualToString:@"URL中设置的名字"]){

       [application
        setApplicationIconBadgeNumber:10];
       return YES;

    }else if (![[url scheme] isEqualToString:@"URL中设置的名字"]){

       return NO;

    }
    }

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

高洛峰

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号