js调用本地app

常常有这样的场景,咱们开发出来的Native-APP需要在Web-APP中进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码。但往往我们都是直接给推广图片加了一个下载链接(App Store中的)。所以咱们来模拟一下用户的操作步骤:

1、用户第一次访问Web-APP

a、点击Banner,进入到APP Store中对应的APP下载页

b、APP下载页中提示:安装;用户点击安装

c、安装完成后,APP下载页中提示:打开;用户继续点击打开

d、用户正常使用APP

2、用户第二次访问Web-APP

a、点击Banner,进入到APP Store中对应的APP下载页

b、APP下载页中提示:打开;用户直接点击打开

c、用户正常使用APP

3、用户第三次、第四次、...、第N次访问Web-APP,操作步骤同2

能看出来,不管是点击Banner还是扫描二维码的方式,对于已经安装过Native APP的用户来说,这个体验都是非常糟糕的。

更优的体验是:点击Banner(或扫描二维码)后,程序判断当前系统是否已安装Native App,如果未安装,则自动跳转到App Store下载页;否则直接打开Native App。

在iOS上,要增加一个APP的大Banner,其实只需要在<head>标签内增加一个<meta>标签即可,格式如:

<meta name=‘apple-itunes-app‘ content=‘app-id=你的APP-ID‘>

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

<meta name=‘apple-itunes-app‘ content=‘app-id=477927812‘>

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

<!-- a标签的链接,设置为对应的下载链接;点击打开的动作,在click事件中注册 -->

<a href="https://itunes.apple.com/cn/app/id477927812" id="openApp">贴吧客户端</a>

<script type="text/javascript">

    document.getElementById(‘openApp‘).onclick = function(e){

        // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为

        // 否则打开a标签的href链接

        var ifr = document.createElement(‘iframe‘);

        ifr.src = ‘com.baidu.tieba://‘;

        ifr.style.display = ‘none‘;

        document.body.appendChild(ifr);

        window.setTimeout(function(){

            document.body.removeChild(ifr);

        },3000)

    };

</script>

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

<!-- a标签的链接,设置为对应的下载链接;点击打开的动作,在click事件中注册 -->

<a href="https://itunes.apple.com/cn/app/id477927812" id="openApp" style="display: none">贴吧客户端</a>

<script type="text/javascript">

    document.getElementById(‘openApp‘).onclick = function(e){

        // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为

        // 否则打开a标签的href链接

        var ifr = document.createElement(‘iframe‘);

        ifr.src = ‘com.baidu.tieba://‘;

        ifr.style.display = ‘none‘;

        document.body.appendChild(ifr);

        window.setTimeout(function(){

            document.body.removeChild(ifr);

        },3000)

    };

    document.getElementById(‘openApp‘).click();

要使用哪一种,就取决与你的实际场景了!

js调用本地app

时间: 2024-08-18 11:31:47

js调用本地app的相关文章

Mobile Safari调用本地App, 否则进入App Store下载

需求: 如何让用户通过手机浏览器(Mobile Safari),访问一个URL就能直接打开ios上的App应用,如果该应用没有安装,那么直接跳转到App Store的App下载页面. 准备工作 ios SDK的OpenURL函数和URL Scheme JavaScript的window.location和setTimeout函数 代码实现 下面以打开暖岛app为例子,JS实现部分如下 window.location = 'nuandao://web2app'; setTimeout(functi

Js调用本地程序

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script language=javascript> function Open() { var wsh=new ActiveXObject("wscript.shell&

js调用本地 exe

js方法 function Run(strPath) //only for ie { try { var objShell = new ActiveXObject("wscript.shell"); objShell.CurrentDirectory="E:\\YOURPATH\\C++\\CHelloWord 3\\Debug\\"; //设置当前路径很重要,能让exe程序解决 相对路径问题 (否则会在html所在路径找) objShell.Run(strPath

JS调用本地应用程序

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><script   language=javascript>     function Open()  {  var wsh=new ActiveXObject("wscript.sh

Electron + React + Node.js + ES6 开发本地 App

Electron + React + Node.js + ES6 开发本地 App 1.概述 近来工作上需要做一款 PC 上的软件,这款软件大体来讲是类似 PPT 的一款课件制作软件.由于我最近几年专注于移动 App 的开发,对 PC 端开发的了解有些滞后.所以我首先需要看看,在 PC 上采用什么框架能够顺利完成我的工作. 我的目标是,在完成这款软件的同时能够顺便学习一下比较流行的技术.在经过前期技术调研后,我明确了实现这款软件所需要的技术条件: 不采用 C++ 方面的类库,比如 MFC.Qt.

如何通过Html网页调用本地安卓app

如何使用html网页和本地app进行传递数据呢?经过研究,发现还是有方法的,总结了一下,大致有一下几种方式 一.通过html页面打开Android本地的app 1.首先在编写一个简单的html页面 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</t

js网页中调用本地应用程序

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Test ActiveXObject</title> <script> function Run(command) { windo

JS调用activeX实现浏览本地文件夹功能

研究了一天,js访问本地文件本身是不可能的,只能借助于插件.植入正题,IE仅支持ActiveX插件. function openDialog() { try { var Message = "请选择文件夹"; //选择框提示信息 var Shell = new ActiveXObject("Shell.Application"); var Folder = Shell.BrowseForFolder(0, Message, 0x0040, 0x11); //起始目录

JS调用App方法及App调用JS方法

做App内嵌H5项目时,经常会遇到js与App的交互,最普遍的就是方法的互相调用,那么如何实现方法的互相调用呢? 写在前面: 如果只是小项目且后期扩大的可能性不大的时候,可以忽略,可如果是长期项目的话,那么就需要考虑以下一些问题了. 1. 方法命名规范. 如果考虑到以后会有大量的方法,那么规范化的命名就很重要了,规范化的命名,既保证了名字的唯一性又保证了代码的可读性方便开发过程,也方便后期维护.   举个栗子,  如果现在有一个方法,是关闭webview, js调用app的方法, 如果直接叫cl