通过超链接打开App应用
var mobileAppInstall = (function () {
var ua = navigator.userAgent,
loadIframe,
win = window,
isIPad = ua.match(/iPad/i) != null,
isIphone = !isIPad && ((ua.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null)),
isIOS = isIPad || isIphone,
isAndroid = !isIOS && ua.match(/android/i) != null,
isMobile = isIOS || isAndroid;
function getIntentIframe() {
if (!loadIframe) {
var iframe = document.createElement("iframe");
iframe.style.cssText = "display:none;width:0px;height:0px;";
document.body.appendChild(iframe);
loadIframe = iframe;
}
return loadIframe;
}
function getPlayUrl(iVideoID, sLy) {
var videoplayURL = iVideoID == "" ? "" : "http://m.video.baomihua.com/m/" + iVideoID;
videoplayURL = videoplayURL == "" ? "" : videoplayURL + (sLy == "" ? "" : "_ly=" + sLy);
return videoplayURL;
}
var appInstall = {
isChrome: ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/),
isAndroid: ua.match(/(Android);?[\s\/]+([\d.]+)?/),
isWeixin: ua.match(/MicroMessenger/i) != null,
isUC: ua.match(/UCBrowser/i) != null,
timeout: 500,
/**
* 尝试跳转appurl,如果跳转失败,进入h5url
* @param {Object} appurl 应用地址
* @param {Object} chromeurl 应用地址
* @param {Object} h5url http地址
*/
open: function (appurl, chromeurl, h5url) {
var t = Date.now();
appInstall.openApp(appurl);
setTimeout(function () {
if (Date.now() - t < appInstall.timeout * 2 + 100) {
h5url && appInstall.openH5(h5url);
}
}, appInstall.timeout)
},
openApp: function (appurl) {
if (appInstall.isChrome) {
if (appInstall.isAndroid) {
win.location.href = chromeurl;
} else {
win.location.href = appurl;
}
} else {
getIntentIframe().src = appurl;
}
},
openH5: function (h5url) {
win.location.href = h5url;
},
playvideo: function (ivideoid, ichannelid, sLy) {
var videoplayURL = getPlayUrl(ivideoid, sLy);
if (sLy == "uc" || sLy == "bdqyy") {
window.location = videoplayURL;
return;
}
if (!isAndroid || appInstall.isWeixin || appInstall.isUC) {
window.location = videoplayURL;
return;
}
appurl = getAndroidAppUrl(ichannelid, ivideoid, sLy);
chromeurl = getChromeIntent(ichannelid, ivideoid, sLy);
var sRedirect = getDownLoadURL(ichannelid, ivideoid, sLy);
mobileAppInstall.open(appurl, chromeurl, sRedirect);
}
}
return appInstall;
function getDownLoadURL(iChannelid, iVideoid, sLy) {
var downloadUrl = "http://m.video.baomihua.com/play2/player/dlVideoApp.htm?videoid=" + iVideoid;
downloadUrl = downloadUrl + (iChannelid == "" ? "" : "&channelid=" + iChannelid);
downloadUrl = downloadUrl + (sLy == "" ? "" : "&ly=" + sLy);
return downloadUrl;
}
function getAndroidAppUrl(iChannelid, iVideoid, sLy) {
var dl = "pmhapp://video.view/play";
switch (parseInt(iChannelid)) {
case 13:
dl = "pmhapp://video.view/play";
break;
case 3:
dl = "pmhapp://video.view/play";
break;
case 55:
dl = "pmhgcw://video.view/play";
break;
default:
dl = "pmhapp://video.view/play";
break;
}
return dl + "?id=" + iVideoid + (sLy ? "&ly=" + sLy : "");
}
function getChromeIntent(iChannelid, iVideoid, iLy) {
// 根据自己的产品修改吧
var dl = "intent://video.view/play?id=" + iVideoid + (iLy ? "&ly=" + iLy : "") + "#Intent;scheme=pmhapp;package=com.com.baomihuawang.androidclient;end";
switch (parseInt(iChannelid)) {
case 13:
dl = "intent://video.view/play?id=" + iVideoid + (iLy ? "&ly=" + iLy : "") + "#Intent;scheme=pmhapp;package=com.com.baomihuawang.androidclient;end";
break;
case 3:
dl = "intent://video.view/play?id=" + iVideoid + (iLy ? "&ly=" + iLy : "") + "#Intent;scheme=pmhapp;package=com.com.baomihuawang.androidclient;end";
break;
case 55:
dl = "intent://video.view/play?id=" + iVideoid + (iLy ? "&ly=" + iLy : "") + "#Intent;scheme=pmhgcw;package=com.com.baomihuawang.androidclient;end";
break;
default:
dl = "intent://video.view/play?id=" + iVideoid + (iLy ? "&ly=" + iLy : "") + "#Intent;scheme=pmhapp;package=com.com.baomihuawang.androidclient;end";
}
return dl;
}
})();
<a class="link" href="javascript:mobileAppInstall.playvideo(35846544,8,'');"></a>
通过超链接打开App应用的更多相关文章
- Android应用安全开发之浅谈网页打开APP
一.网页打开APP简介 Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布 ...
- 微信扫描打开APP下载链接提示代码优化
上一次我发了一篇文章叫“微信打开网址添加在浏览器中打开提示”,里面我发出来了三个代码,分别是纯JS.js+html.jQuery+HTML代码.今天来一个简化版带可以关闭的按钮操作.使用的是纯JS+H ...
- 微信扫描打开APP下载链接提示代码优化(转)
上一次我发了一篇文章叫“微信打开网址添加在浏览器中打开提示”,里面我发出来了三个代码,分别是纯JS.js+html.jQuery+HTML代码.今天来一个简化版带可以关闭的按钮操作.使用的是纯JS+H ...
- 使用扫描二维码打开app
应该不少人遇到过这种需求,扫描二维码打开app如果用户没有这个app则提示它跳转. 用网页直接来调用app是不打可能的,必须原生那边先做一些配置. 首先,安卓和苹果的调用方法是不同的. 所以我们需要先 ...
- 实现微信浏览器内打开App Store链接(已被和谐,失效了)
微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...
- h5分享页面打开APP
项目中 直播app分享出来的直播h5页面 点击进入按钮:已下载app 就进入app,未下载跳转到下载页面 判断是安卓还是ios var u = navigator.userAgent; var isA ...
- Android按下home键后重新打开app进入主activity的问题
问题阐述: 当我们写一款App的时候,势必会有这种情况:用户已经进行了多级的操作,现返回栈中已存在多个activity,那么这个时候我们想回到最初的activity难道要一层层的返回吗,对用户来说 无 ...
- 手机浏览网页或打开App时莫名弹出支付宝领红包界面的原因及应对措施
自从支付宝推出扫码领红包活动后,这种模式独特的赏金机制,短时间内吸引了大量的关注,但是随之也产生了很多的问题,比由于如在赏金的驱动下,微信群里铺天盖地的红包口令,朋友圈里各式各样的领红包二维码图片, ...
- Android 网页打开app(或者打开指定页面)并且接收参数
网页打开app 现实描述场景: 1.短信通知中通知内容,比如信息中一个咨询详情,流程步骤,信息中的地址打开的是一个网页,网页打开就指定app或者app中的指定页面 html代码 <html> ...
随机推荐
- 解决Visual Studio 找不到报表控件、rdlc中文乱码
找回报表控件 运行安装程序中的 ..\packages\Reporting Services\RVAddon.msi 工具栏,右键选择ReportViewer,注意选择的版本 如果不能编辑报表文件(. ...
- CI框架篇之辅助函数篇--基本(1)
辅助函数 每个辅助函数文件仅仅是一些函数的集合URL Helpers 可以帮助我们创建链接, Form Helpers 可以帮助我们创建表单,Text Helpers 提供一系列的格式化输出方式, C ...
- js 的执行过程
step 1. 读入第一个代码块. step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5. step 3. 对var变量和function定义做"预编译 ...
- Asp.net: WebForm基础上构建Mvc的方法
添加引用: System.Web.Routing System.Web.Abstractions System.Web.Mvc 添加文件夹: Controllers, Views, Views / ...
- [Cache] C#操作缓存--CacheHelper缓存帮助类 (转载)
点击下载 CacheHelper.zip CacheHelper 缓存帮助类 C#怎么操作缓存 怎么设置和取缓存数据,都在这个类里面呢 下面看一下代码吧 /// <summary> /// ...
- 评论一下现有几个开源IM框架(Msn/QQ/Fetion/Gtalk...)
转载:http://www.cnblogs.com/zc22/archive/2010/05/30/1747300.html 前言 ---------------- 这阵子,在集成通讯框架, 由于不想 ...
- windows server 2003 系统重装蓝屏
错误码:0X0000007B 这个代码和硬盘有关系,不过不用害怕,不是有坏道了,是设置问题或者病毒造成的硬盘引导分区错误.如果您在用原版系统盘安装系统的时候出这个问题,那说明您的机器配置还是比较新的, ...
- Android - 向服务器发送数据(GET).
在此,使用HTTP协议,通过GET请求,向服务器发送请求,这种方式适合于数据量小,数据安全性要求不高的情况下. 一,服务器端,使用Servlet. 在服务器端,定义一个HttpServlet的子类,以 ...
- iBATIS缓存cacheModel属性浅析
iBATIS缓存cacheModel属性的应用使得在Mapped Statement中缓存常用的数据,那么本文将会给你介绍iBATIS缓存cacheModel属性的信息. AD:2013云计算架构师峰 ...
- (转)iOS被开发者遗忘在角落的NSException-其实它很强大
转载自 http://www.jianshu.com/p/05aad21e319e iOS被开发者遗忘在角落的NSException-其实它很强大 字数597 阅读968 评论4 喜欢28 NSExc ...