我的网站上有三个按钮,链接到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浏览器中打开本机应用程序而没有错误,或者默默回退到网址?
老实说,我试图解决这个问题好几天没有工作结果/例子。也许你至少可以提供工作实例/网站。
提前致谢。
答案 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