Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以实现从网站到本机应用程序的深度链接?_Android_Ios_Facebook_Deep Linking_Applinks - Fatal编程技术网

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

Android 是否可以实现从网站到本机应用程序的深度链接?,android,ios,facebook,deep-linking,applinks,Android,Ios,Facebook,Deep Linking,Applinks,我的网站上有三个按钮,分别链接到Facebook、Twitter和vk.com页面。我想打开本机应用程序,如果它安装在用户设备上。否则,我希望URL回退被打开 首先,我尝试直接使用本地应用程序方案和插件。但是,当我试图打开本机应用程序URL方案时,当本机应用程序未安装时,Safari显示了一个错误,但最终打开了URL回退页面。默认Android浏览器表示,他不知道如何处理此类URL方案: 是的!请看一下本培训: 这是你需要的信息吗?lmk这仍然是可能的,但在Android默认浏览器的较新版本

我的网站上有三个按钮,分别链接到Facebook、Twitter和vk.com页面。我想打开本机应用程序,如果它安装在用户设备上。否则,我希望URL回退被打开

首先,我尝试直接使用本地应用程序方案和插件。但是,当我试图打开本机应用程序URL方案时,当本机应用程序未安装时,Safari显示了一个错误,但最终打开了URL回退页面。默认Android浏览器表示,他不知道如何处理此类URL方案:


是的!请看一下本培训:


这是你需要的信息吗?lmk

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

intent://page/838619192839881#Intent;scheme=fb;package=com.facebook.katana;end
默认情况下,这将回退到Google play,但您可以通过添加
S.browser\u fallback\u 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


我致力于此,这是一种免费、简单、容易的方式,让所有东西都能在Android和iPhone上运行,我们已经做了所有这些肮脏的工作。你可以用它,或者直接给我们写信,我们会帮你的

接受的答案只适用于Chrome v28和Android 5.0的默认浏览器。如果你想在Facebook/Twitter网络视图、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>


或者,您也可以使用这样的服务,它会自动完成您想要的功能。

谢谢您的回复。本文档介绍如何配置应用程序清单。我正在寻找的方式,如何调用从通常的网页深度链接。问题是你不能只使用native://url,因为在默认的移动操作系统浏览器中,这会导致错误。哦,好的,对不起。。。我以为这是一个Android主题,直到我在
openSesame()后面加了一个
returnfalse
,它才起作用。另一种方法是从
openSesame
函数返回
false
,并将
return openSesame()
放在onclick中。现在它工作了,谢谢!