为啥这个由 facebook 生成的深层链接(applink)不起作用?
Posted
技术标签:
【中文标题】为啥这个由 facebook 生成的深层链接(applink)不起作用?【英文标题】:Why this deep link (applink), generated by facebook does not work?为什么这个由 facebook 生成的深层链接(applink)不起作用? 【发布时间】:2015-07-31 18:00:00 【问题描述】:我想在我的网站上制作一个按钮,允许用户打开本机 facebook 应用程序(如果已安装),否则打开 facebook 网站。据我了解,我必须为此创建单独的 html 页面。
我尝试了 facebook 托管的应用程序链接来获得有效的应用程序链接示例。以下代码由facebook生成,可以通过url访问。
我尝试使用 ios(Safari、Chrome)、android(默认浏览器、Chrome)打开此链接。尽管我在两台设备上都安装了 facebook 应用程序,但我被重定向到 facebook 网站。
为什么会这样?我怎样才能让它打开原生应用程序?
<html>
<head>
<title>App Link</title>
<meta property="fb:app_id" content="505860159524932" />
<meta property="al:ios:url" content="fb://profile/838619192839881" />
<meta property="al:ios:app_name" content="Facebook" />
<meta property="al:ios:app_store_id" content="284882215" />
<meta property="al:android:package" content="com.facebook.katana" />
<meta property="al:android:app_name" content="Facebook" />
<meta property="al:android:url" content="fb://page/838619192839881" />
<meta property="al:web:should_fallback" content="false" />
<meta property="al:web:url" content="https://www.facebook.com/warpcompany" />
<meta http-equiv="refresh" content="0;url=https://www.facebook.com/warpcompany" />
</head>
<body>Redirecting...</body>
</html>
【问题讨论】:
Safari 和 Chrome 不支持应用链接。 【参考方案1】:AppLinks 是只有 Facebook 原生支持的协议。这意味着只有适用于 Android 和 iOS 的 Facebook 原生应用程序才能正确解析元标记并采取行动。所有其他浏览器和平台都会忽略它们。
为了正确处理其他浏览器中的链接,除了 AppLinks 之外,您还使用客户端 JS 重定向代码来支持其他浏览器中的重定向。如果您不想全部构建,我构建了一个名为 branch.io 的免费工具,它将托管您与此客户端 JS 的链接以及自动配置您的 AppLinks。
如果您想自己构建它,这里是您可以用于 iOS safari 的代码:
<script type="text/javascript">
window.onload = function()
document.getElementById("l").src = "fb://page/838619192839881";
setTimeout(function()
window.location = "itms-apps://itunes.apple.com/app/id284882215";
, 750);
;
</script>
<iframe id="l" style="visibility:hidden"></iframe>
而对于Android,你可以使用这个客户端JS代码sn-p:
<script type="text/javascript">
window.onload = 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);
;
</script>
【讨论】:
【参考方案2】:the Facebook Doc 说
App Links 是一种开放标准,可以让您深入链接到应用中的内容。当使用您的应用的用户通过 Facebook(或其他支持应用链接的应用)分享内容时,您可以创建一个链接,以便从该内容跳转回您的应用。
所以我想就像@Ming Li 说的,它不支持 Safari 和 Chrome。
您可以在您的时间轴上试用,并使用 Facebook 应用打开它。
【讨论】:
以上是关于为啥这个由 facebook 生成的深层链接(applink)不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
如何为我的 iOS 应用创建深层链接以在 Facebook 中使用?
Facebook shareLinkContent 的深层链接