点击页面判断是否安装app并打开,否则跳转app store的方法

转载 2016年08月31日 14:15:53

常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码。但往往我们都是直接给推广图片加了一个下载链接(App Store中的)。所以咱们来模拟一下用户的操作步骤: 
1、用户第一次访问宣传页面 
a、点击Banner,进入到APP Store中对应的APP下载页 
b、APP下载页中提示:安装;用户点击安装 
c、安装完成后,APP下载页中提示:打开;用户继续点击打开 
d、用户正常使用APP 
2、用户第二次访问宣传页面 
a、点击Banner,进入到APP Store中对应的APP下载页 
b、APP下载页中提示:打开;用户直接点击打开 
c、用户正常使用APP 
3、用户第三次、第四次、…、第N次访问,操作步骤同2 
能看出来,不管是点击Banner还是扫描二维码的方式,对于已经安装过APP的用户来说,这个体验都是非常糟糕的。 
更优的体验是:点击Banner(或扫描二维码)后,程序判断当前系统是否已安装App,如果未安装,则自动跳转到App Store下载页;否则直接打开App。 
在iOS上,要增加一个APP的大Banner,其实只需要在标签内增加一个标签即可,格式如:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">meta</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">'apple-itunes-app'</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">content</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">'app-id=你的APP-ID'</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

比如加一个百度贴吧的Native APP大Banner,用下面这串儿代码:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">meta</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">'apple-itunes-app'</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">content</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">'app-id=477927812'</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

而对于点击链接后,能否直接打开,可以通过下面的代码来实现。前提条件:你得知道你的APP对应的打开协议,如贴吧APP,协议为:com.baidu.tieba:// ,微信的:weixin:// ,and so on。。。 

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">script</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"text/javascript"</span>></span><span class="javascript" style="box-sizing: border-box;">
    document.getElementById(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'openApp'</span>).onclick = <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(e)</span>{</span>
        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为</span>
        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 否则打开a标签的href链接</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> ifr = document.createElement(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'iframe'</span>);
        ifr.src = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.baidu.tieba://'</span>;
        ifr.style.display = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'none'</span>;
        document.body.appendChild(ifr);
        window.setTimeout(<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>{</span>
            document.body.removeChild(ifr);
        },<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3000</span>)
    };
</span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">script</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

当然,如果你是设计成一张二维码,可以用下面这段代码: 

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">script</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"text/javascript"</span>></span><span class="javascript" style="box-sizing: border-box;">
    document.getElementById(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'openApp'</span>).onclick = <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(e)</span>{</span>
        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为</span>
        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 否则打开a标签的href链接</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> ifr = document.createElement(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'iframe'</span>);
        ifr.src = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.baidu.tieba://'</span>;
        ifr.style.display = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'none'</span>;
        document.body.appendChild(ifr);
        window.setTimeout(<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">function</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>{</span>
            document.body.removeChild(ifr);
        },<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3000</span>)
    };
    document.getElementById(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'openApp'</span>).click();</span></code>

点击页面判断是否安装app并打开,否则跳转app store的方法

常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码。但往往我们都是直接给推广图片加了一个下载链接(App Store中的)。所以咱们来模拟一下用...
  • xyxjn
  • xyxjn
  • 2014年12月08日 16:40
  • 79036

iOS-判断是否安装某个App并从另一个App中启动该App(未安装跳转到AppStore)

前言: 非越狱设备,在你的应用里无法知道系统安装了什么别的应用。  如果想要准确的通过程序控制和发现本地安装的应用,目前只能在破解版的ios 上开始显示,但是我们可以通过一些其他...
  • kashjack
  • kashjack
  • 2016年12月06日 15:13
  • 1211

ios 跳转AppStore的两种方法,以及遇到的坑

iOS跳转appStore的两种方法网上已经有很多的博客进行讲解了,主要是app内跳转相关网页,和跳出app,跳转到AppStore。相关的博客大家可以参看参考博客 为了防止参考博客实效,我把相关代...
  • HHL110120
  • HHL110120
  • 2017年11月03日 10:55
  • 203

HTML中判断手机是否安装某APP,跳转或下载该应用

手机浏览器下判断是否安装某app,并判断是否打开该应用 有些时候在做前端输出的时候,需要和app的做些对接工作。就是在手机浏览器中下载某app时,能判断该用户是否安装了该应用。如果安...
  • Bruce__Liu
  • Bruce__Liu
  • 2015年11月14日 10:04
  • 5670

Android H5判断是否安装app和唤起APP

H5中是无法直接判断应用是否安装的,但是可以间接判断。 第一种方式, if(...){ document.location = ''; setTimeout(function(){    //此处如果...
  • robertcpp
  • robertcpp
  • 2016年05月05日 18:35
  • 11156

iOS_如何判断是否安装某个App并从另一个App中启动该App(未安装跳转到AppStore)

前言: 非越狱设备,在你的应用里无法知道系统安装了什么别的应用。  如果想要准确的通过程序控制和发现本地安装的应用,目前只能在破解版的ios 上开始显示,但是我们可以通过一些其他...
  • Delegate_M
  • Delegate_M
  • 2016年04月27日 17:42
  • 4004

JS判断页面由哪个APP打开

我们有个需求: 有一个WEB页面上面有用app打开的按钮,但是在APP页面内部展示的时候是不需要这个按钮的,这时候我们就需要一段判断在哪个APP打开的JS 最好是你们自己的APP可以提供一个返回 ...
  • shan1991fei
  • shan1991fei
  • 2017年06月06日 17:57
  • 802

js判断设备,跳转app应用、android市场或者AppStore

进入微信页面就弹出选择浏览器的框  //js判断是否是苹果设备 function checkIsAppleDevice() { var u = navigator.userAgent,...
  • licyXiaobaiyang
  • licyXiaobaiyang
  • 2016年08月29日 09:06
  • 3701

判断APP是否第一次启动,分别跳转不同页面

逻辑思想就是利用SharedPreferences进行判断APP是否是第一次启动 分别跳转不同页面 欢迎界面代码: package com.example.hr_jie; import and...
  • as4061218
  • as4061218
  • 2015年12月17日 17:21
  • 307

android web页面点击事件跳转至APP

直接上代码 "http://www.baidu.com" id="openApp">打开APP "text/javascript">     document.getElementById('o...
  • gyz413977349
  • gyz413977349
  • 2014年12月26日 14:38
  • 1885
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:点击页面判断是否安装app并打开,否则跳转app store的方法
举报原因:
原因补充:

(最多只允许输入30个字)