如果Deeplink网址不起作用,请将其发送到下载页面

时间:2018-02-02 17:23:24

标签: javascript jquery windows deep-linking

我需要实现一个javascript,我可以检测我的深层链接是否有效,如果它有效,那么它应该保持相同但如果它不起作用那么它必须启动下载文件。 为此,我使用超时功能来做到这一点。这是我使用的示例代码。

setTimeout(function () { window.location = "https://itunes.apple.com/appdir"; }, 25);
window.location = "appname://";

但是这个代码在android和ios上工作得很好但是它在桌面浏览器中产生了问题。在Deeplink正常工作后的桌面浏览器中,超时功能不会停止,它会重定向到下载页面。

所以最后我想要一些可以检测我的Deeplink是否有效的事件,所以我可以设置cleartimeout函数来防止重定向到下载URL

3 个答案:

答案 0 :(得分:0)

对于桌面浏览器,请考虑使用窗口模糊侦听器并相应地执行操作 模糊监听器会告诉您用户是否离开了标签页或浏览器

read_string

答案 1 :(得分:0)

我会在超时时尝试使用时间戳表达式。

这样的事情(根据需要使用阈值):

defaults = [1,2,3,4,5,6,7,8,9,10];
list.devices = [1,2,3,4];

答案 2 :(得分:0)

我曾经遇到过类似的问题,最后我找到了一个不错的拙劣工作来使它起作用:

var timer = null;

function setListener() {
    window.document.addEventListener("visibilitychange", function(e) {
        window.clearTimeout(timer);
        timer = null;
        window.open('','_self').close();
    });
}

function redirectAndroid() {
    setTimeout(function () { window.location = "https://itunes.apple.com/appdir"; }, 25);
    window.location = "appname://";
}

function redirecIOS() {
    setListener();
    var beforeApp = new Date().valueOf();
    window.location.href = "appname://";
    var afterApp = new Date().valueOf();
    if (afterApp - beforeApp < 100) {
        setTimeout(function() {
            "https://itunes.apple.com/appdir";      
        }, 25);
    } else {
        if (timer === null) {
            timer = setTimeout(function() {
                "https://itunes.apple.com/appdir";      
            }, 200);
        }
    }

这样,重定向到应用程序后,如果打开它,则会在超时功能之前触发“ visibilitychange”事件,并且您清除超时以避免将其重定向到Web,然后关闭浏览器(如果需要)。如果未安装应用程序,则timeAfterApp-timeBeforeApp不是<100,因此您可以在其中设置超时。