通过超链接打开App应用

URL schemes, 通过超链接打开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;
    }
})();
时间: 2024-11-09 09:53:57

通过超链接打开App应用的相关文章

URL schemes, 通过超链接打开App应用

URL schemes, 通过超链接打开App应用 更多3 url iPhone safari scheme URL schemes 这个我就不解释了,大家可以看这里:http://en.wikipedia.org/wiki/URI_scheme 通俗点说,就是url地址栏:输入 http:…. 打开的是网页:输入 qqdl:…… 如果你安装了腾讯的旋风下载工具,系统会自动启动旋风下载:输入 thunder:…… 对应的就是打开迅雷下载了:最常用的还有 ftp:…… : udp:…… :  ma

[转]实现微信浏览器内打开App Store链接

微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″>download</a> ,在微信浏览器点击链接是没有反应的,但是如果是其他的链接地址,比如百度那就没有问题 后来我发现如果你在微信官方后台编辑图文,把原文链接写为:http://itunes.apple.com/us/app/id399608199 ,那就可以打开了,发现微信页面的“查看原

微信浏览器内打开App Store链接

将页面的代码写为:<a href="http://mp.weixin.qq.com/mp/redirect?url=http://itunes.apple.com/cn/app/guang-dian-bi-zhi/id942884576">ios下载</a>,在微信浏览器内可以打开app store的地址了.

微信浏览器不支持打开App Store 页面的解决

微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”"https://itunes.apple.com/cn/app/di-yip2p/id853552412?mt=8"″>download</a> ,在微信浏览器点击链接是没有反应的,但是如果是其他的链接地址,比如百度那就没有问题 那么如何解决这个问题呢? 哪就是走微信的接口,步骤如下: 1.将原来的url进行encodeURIComponent 2.生成新

Android应用安全开发之浅谈网页打开APP

一.网页打开APP简介 Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布其AppLink SDK,开发者需要申请相应的资格,配置相关内容才能使用.这些都是通过用户自定义的URI scheme实现的,不过背后还是Android的Intent机制.Google的官方文档<Android Intents with Chrome>一文,介绍了在Android Chrome浏览

微信中打开app store连接

微信浏览器是不支持打开App Store 页面的.比如你页面写 <a href="http://itunes.apple.com/us/app/id867985717″>下载取号啦</a> ,在微信浏览器点击链接是没有反应的,但是如果是其他的链接地址,比如百度那就没有问题. function viewSource() { var redirectUrl = sourceurl.indexOf('://') < 0 ? 'http://' + sourceurl :

iOS10 打开APP设置界面和WIFI界面

iOS10下,权限这块有了一些变化 1.打开APP设置界面 //打开设置 let url:NSURL = NSURL(string: UIApplicationOpenSettingsURLString)! if UIApplication.shared.canOpenURL(url as URL){ UIApplication.shared.openURL(url as URL) } 这个是跳到本身APP路径下的权限界面,比如有相机权限.通讯录等等,可以直接开关设置. 1.打开系统WIFI界面

iOS中使用schema协议调用APP和使用iframe打开APP的例子

在iOS中,需要调起一个app可以使用schema协议,这是iOS原生支持的,并且因为iOS系统中都不能使用自己的浏览器内核,所以所有的浏览器都支持,这跟android生态不一样,android是可以自己搞内核的,但是iOS不行. 在iOS中提供了两种在浏览器中打开APP的方法:Smart App Banner和schema协议. Smart App Banner 即通过一个meta 标签,在标签上带上app的信息,和打开后的行为,例如:app-id之类的,代码形如: <meta name=&quo

【Anroid界面实现】WindowManager类使用详解——用户首次打开APP的使用教学蒙板效果实现

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在上一篇的文章中,我们介绍了如何实现桌面悬浮窗口,在这个效果的实现过程中,最重要的一个类就是WindowManager,今天这篇文章,将对WindowManager的使用进行介绍,并且实现一个使用WindowManager来实现用户打开APP,显示首次使用教学蒙板的效果. WindowManager类实现了ViewManager接口,ViewManager接口允许我们在Activity上添加或者是移除vi