V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sd4399340
V2EX  ›  问与答

优酷手机网页版如何仅靠 js 就能判断用户是否在手机安装了优酷

  •  
  •   sd4399340 · 2014-08-09 11:21:02 +08:00 · 4828 次点击
    这是一个创建于 3778 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如用手机的safari随便开一个优酷视频,会有一条banner,两个按钮,下载安装和打开app,如果手机上没有安装优酷的话,点击“打开app”回弹一个小窗,提示你先安装,这是如何做到的?我觉得这里有技巧,即便你安装了优酷的app,点击“打开app”链进去以后如果你回来再打开safari,依然有这个小窗。

    因为最近我也在实现一个相关的功能,我知道iOS原生支持的banner可以达到这种效果,没安装就链接到app store,安装了就直接链进app,但是像优酷这种我觉得很神奇啊。

    反观乐视的解决方案,如何没安装app的话,点击banner的“立即下载”后safari会先报一个错,然后把你链接到app store,乐视大概用的就是这个技术



    用一个hidden的iframe先去请求乐视app所注册的custom url schema,如果打不开就可以知道用户没安装乐视app,然后把用户链接到app store,这个方法的坏处就是虽然iframe是隐藏的,但url无效的话safari会先报一个错,体验很不好!

    有相关经验的来指导下~
    第 1 条附言  ·  2014-08-12 22:48:15 +08:00
    今天跟了下js(使用了神一般的DOM breakpoint,直接选上body的subtree modification),发现调用的不是2楼说的那个openApp函数,而是这个:

    https://gist.github.com/PinkyJie/0d22429bfeca613184cf

    还是没发现这方法有什么玄机,为啥能阻止Safari显示“can not open page”的error。。。
    7 条回复    2014-08-09 17:28:53 +08:00
    explon
        1
    explon  
       2014-08-09 12:11:11 +08:00   ❤️ 1
    不好意思,这功能 iOS 只需要一行代码:

    <meta content="app-id=518213356" name="apple-itunes-app" />
    VeryCB
        2
    VeryCB  
       2014-08-09 12:29:04 +08:00
    debug 了一下 youku 移动端的页面,找到了这个 js http://static.youku.com/v1.0.0973/x/js/ph.js

    里面有一个 openApp 方法:

    https://gist.github.com/VeryCB/999489ff8348eb61e60d

    貌似也是用 iframe 做的,我试了一下如果没装优酷App也是会报一个『Cannot Open Page』的错
    VeryCB
        3
    VeryCB  
       2014-08-09 12:35:45 +08:00
    @explon 你说的是 Smart App Banners,跟楼主问的不是一回事
    sd4399340
        4
    sd4399340  
    OP
       2014-08-09 16:37:15 +08:00
    @explon 不是一回事~
    sd4399340
        5
    sd4399340  
    OP
       2014-08-09 16:38:09 +08:00
    @VeryCB 对啊,奇怪的就是优酷没报这个“cannot open page”的错啊
    VeryCB
        6
    VeryCB  
       2014-08-09 17:11:43 +08:00
    @sd4399340 我的优酷报了『Cannot open page』...
    sd4399340
        7
    sd4399340  
    OP
       2014-08-09 17:28:53 +08:00
    @VeryCB 哦你意思是你手机的safari报了,我的没报啊,很奇怪。。。那你手机上优酷跟乐视的效果一样啊,乐视我手机上也报了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3215 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.