繁体   English   中英

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

[英]Is it possible to implement deep links from website to native app?

我的网站上有三个按钮,链接到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“标准”,这有很多来自Facebook的推广。 我甚至尝试使用他们的托管应用程序链接,以确保我已经正确地生成了一切。 它不起作用,它总是重定向到网站后备。 您可以从https://fb.me/746134728830806轻松地自行测试

是否有可能在网站上提供深层链接,这将至少在默认的os浏览器中打开原生应用程序而不会出错,或者无声地回退到URL?

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

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

默认情况下,这将回S.browser_fallback_url 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

后备应该是url编码的。

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

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

接受的答案仅适用于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这样的服务,它可以自动完成您正在寻找的服务。

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

这是您需要的信息吗? LMK

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM