现在可以实现从网站到本机应用程序的深层链接吗?

时间:2015-05-19 19:51:01

标签: android ios facebook deep-linking applinks

我的网站上有三个按钮,链接到facebook,twitter& vk.com页面。我想打开本机应用程序,如果它安装在用户设备上。否则,我想要打开url后备。

首先,我尝试使用deep-link.js插件直接使用原生应用方案。但是,当我尝试打开本机应用程序URL方案时,当未安装本机应用程序时,Safari显示错误,但最后打开了URL回退页面。默认的android浏览器说他不知道如何处理这样的url方案:

<a class="btn btn-primary" href="https://www.facebook.com/warpcompany" data-app-ios="fb://profile/838619192839881" data-app-android="fb://page/838619192839881">Facebook</a>

然后我尝试使用App Links&#34;标准&#34;,这有来自facebook的推广。我甚至试图使用他们的托管应用程序链接,以确保我正确地生成了一切。它不起作用,它总是重定向到网站后备。您可以自己轻松地进行测试:https://fb.me/746134728830806

那么,是否有可能在网站上提供深层链接,至少在默认的os浏览器中打开本机应用程序而没有错误,或者默默回退到网址?

老实说,我试图解决这个问题好几天没有工作结果/例子。也许你至少可以提供工作实例/网站。

提前致谢。

3 个答案:

答案 0 :(得分:9)

仍有可能,但在Android默认浏览器的较新版本中,您必须使用意图而不是仅尝试打开深层链接。例如,将您的fb://page/838619192839881替换为

intent://page/838619192839881#Intent;scheme=fb;package=com.facebook.katana;end

默认情况下,这会回退到Google Play,但您可以覆盖添加S.browser_fallback_url的后备广告:

intent://page/838619192839881#Intent;scheme=fb;package=com.facebook.katana;S.browser_fallback_url=http%3A%2F%2Fwww.facebook.com%2F;end

后备应该是网址编码。

当然,如果用户不在Android手机上或使用旧版本的默认浏览器(或奇怪的浏览器),则会出现问题。您可以设置一系列条件,并使用每个案例的正确代码替换您的HTML。

我处理HOKO,这是一种免费,简单易用的方法,让所有内容都可以在Android和iPhone上运行,我们已经完成了所有肮脏的工作。你可以宁可使用它,也可以直接告诉我们,我们会帮助你。

答案 1 :(得分:5)

接受的答案仅适用于Chrome v28和Android 5.0的默认浏览器。如果你想让它在其他浏览器上工作,比如Facebook / Twitter webviews,Firefox,UC和5.0之前的旧版默认浏览器,你需要使用一些更复杂的代码。

将此功能添加到您的JS代码段:

    var openSesame = function() {
        var method = 'iframe';
        var fallbackFunction = function() {
            if (method == 'iframe') {
                window.location = "market://details?id=com.facebook.katana";
            }
        };
        var addIFrame = function() {
            var iframe = document.createElement("iframe");
            iframe.style.border = "none";
            iframe.style.width = "1px";
            iframe.style.height = "1px";
            iframe.src = "fb://page/838619192839881";
            document.body.appendChild(iframe);
        };
        var loadChromeIntent = function() {
            method = 'intent';
            document.location = "intent://page/838619192839881#Intent;scheme=fb;package=com.facebook.katana;end";
        };
        if (navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match("Version/")) {
            loadChromeIntent();
        }
        else if (navigator.userAgent.match(/Firefox/)) {
            window.location = "fb://page/838619192839881";
        }
        else {
            addIFrame();
        }
        setTimeout(fallbackFunction, 750);
    };

然后你的按钮将如下所示:

<a href="" onclick="openSesame();">Open the App</a>

或者您可以使用像branch.io这样的服务,它可以完全满足您的需求。

答案 2 :(得分:1)

是的!看看这个培训: https://developer.android.com/training/app-indexing/deep-linking.html

这是您需要的信息吗? LMK