为什么这个由 facebook 生成的深层链接 (applink) 不起作用?

2023-12-10

我想在我的网站上创建一个按钮,允许用户打开本机 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>

AppLinks 是一种只有 Facebook 原生支持的协议。这意味着只有适用于 Android 和 iOS 的 Facebook 本机应用程序才能正确解析元标签并采取行动。所有其他浏览器和平台都会忽略它们。

为了正确处理其他浏览器中的链接,除了 AppLink 之外,您还可以使用客户端 JS 重定向代码来支持其他浏览器中的重定向。如果你不想全部构建出来,我构建了一个免费工具,名为分支.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" width="1" height="1" style="visibility:hidden"></iframe>

对于 Android,您可以使用以下客户端 JS 代码片段:

<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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个由 facebook 生成的深层链接 (applink) 不起作用? 的相关文章

  • 将 android 蓝牙客户端套接字连接到 ubuntu 服务器套接字时出现问题

    我正在编写一个 Android 应用程序 它应该通过蓝牙与服务器交换数据 服务器端位于运行 Ubuntu 的 PC 上 使用 bluez 库 用 C 或 C 编写 当我尝试连接到 PC 上的服务器套接字时 我的 Android 应用程序失败
  • 核心数据:为什么必须调用重新加载数据才能使我的应用程序运行?

    我花了整个晚上调试一个简单的应用程序 该应用程序从网络检索一张图像 是的 是的 旨在让我的生活更轻松 并将其显示在表格视图中 我这样做是为了练习学习核心数据 在我修复它之前 错误消息显示如下 2012 09 30 06 16 12 854
  • 警报对话框中的 Webview 不显示内容

    我正在开发一个 Android 应用程序 我需要在网络视图和警报对话框上显示一个网站 该站点显示在网络视图中 但不显示在警报对话框中 到目前为止 这是我的代码 WebView WebView myWebView WebView v find
  • 表面视图+gl表面视图+框架布局

    我是 java 和 OpenGL 的新手 我正在尝试获得一个相机预览屏幕 能够 同时显示 3D 对象 浏览完样本后 api 演示 我想结合示例的代码 api 演示就足够了 但不知何故它不起作用 迫使我 启动时关闭 错误被称为空指针 例外 有
  • 无需 iPhone 6 Plus 即可预览 iOS 应用程序

    我已经在 Yosemite 中使用 iPhone 6 和 Quicktime 完成了 iOS 应用程序预览 视频 但我无法在 iTunes Connect 中为 iPhone 6 上传它 而且我没有 iPhone 6 设备 有没有办法在没有
  • Android Gradle 问题 - Flutter / Dart

    我的 Gradle 同步有问题 我使用 IntelliJ 和 Android Studio 构建 Flutter Dart 应用程序 我添加了 2 个新的依赖项 现在 Gradle 出现了问题 在 Android Studio 中一切正常
  • 通知声音不适用于 api 10 android

    我用这个功能来显示状态notification 一切正常 但没有声音播放notification public void notifiction main String ticker String title String text int
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • Android:canvas.drawBitmap() 方法无法正常工作

    我已经发布了两个与此相关的问题 请参考此自定义饼图 1 https stackoverflow com questions 28343600 customize pie chart in quarter shape at the botto
  • 如何仅从 Firestore 获取最新更新的数据?

    在 Firestore 上发现任何更改时始终获取整个文档 如何只获取最近更新的数据 这是我的数据 我需要在第一次加载时在聊天中按对象顺序 例如 2018 09 17 30 40 msg和sendby 并且如果数据更新则仅获取新的msg和se
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • UICollectionReusableView 方法未被调用

    我希望我的部分位于UICollectionView有一个带有图像的标题 我已按照以下步骤操作 在故事板中 分配了一个标题作为我的附件UICollectionView 给它一个标识符 创建了一个子类UICollectionReusableVi
  • NSDateFormatter:根据 currentLocale 的日期,不包含年份

    这不会太难吧 我想显示不带年份的日期 例如 8 月 2 日 美国 或 02 08 德国 它也必须适用于许多其他语言环境 到目前为止 我唯一的想法是对年份进行正常格式 然后从生成的字符串中删除年份部分 我认为你需要看一下 NSString d
  • 如何更改 UINavigationController 后退按钮名称?

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • 如何以编程方式使用资产目录图像的切片信息?

    我的项目中曾经有一个图像 我会像这样加载它 UIImage image UIImage imageNamed image name resizableImageWithCapInsets UIEdgeInsetsMake 10 0f 10
  • 找不到数据库路径是不可能的

    我对 android 开发很陌生 现在我正在尝试通过扩展 SQLiteOpenHelper 的类创建数据库 我确信数据存储在我的 Nexus 7 我用来测试应用程序的设备 上的某个位置 但是我找不到数据库的路径 我四处寻找其他类似的问题 所
  • 如何解决 greenDAO 在执行 InsertOrReplace 时“不存在这样的表错误”?

    我正在使用 greenDAO 并且已成功生成所有必需的类和实体 并且我可以看到我的表已创建 但是在要替换的行上放置断点后 我收到一条错误消息 告诉我 不存在这样的表错误 try appTimeUsageDao insertOrReplace
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓
  • 选择 UITableViewCell 时 UIView 背景颜色消失

    我在界面生成器中构建了一个简单的 tableViewCell 它包含一个包含图像的 UIView 现在 当我选择单元格时 会显示默认的蓝色选择背景 但 UIView 的背景颜色消失了 我的 UITableViewCell 的实现文件没有做任

随机推荐

  • 什么样的内存语义控制 C# 中的数组分配?

    鉴于以下情况 字节 数据 和一个声明为的函数私有字节 构造命令 如果我要分配的结果构造命令 to sDatasData 是否只是指向从函数返回的内容 或者是否会在内存中为 sData 分配一些空间 并将函数结果的内容复制到其中 该赋值将简单
  • 从 json 中解组嵌套对象

    我有传入的 JSON 字符串 需要解组为 JAXB 带注释的对象 我正在使用抛弃来做到这一点 JSON 字符串如下所示 objectA propertyOne some val propertyTwo some other val obje
  • 如何调试 Google Apps 脚本(又名 Logger.log 记录到哪里?)

    在Google表格中 您可以添加一些脚本功能 我正在添加一些东西onEdit事件 但我不知道它是否有效 据我所知 您无法从 Google Sheets 调试实时事件 因此您必须从调试器执行此操作 这是毫无意义的 因为事件参数传递给了我的on
  • Java Eclipse IDE 出现“未找到模块 javafx.controls”错误

    我正在使用带有 Java 的 Eclipse IDE 2020 03 版本 我正在尝试使用 FXML 在线检查了一些教程和步骤并遵循它们 但我仍然收到以下错误 boot层初始化时出错 java lang module FindExcepti
  • jQuery-mobile 和 ASP.NET 组合问题

    我正在开发一个结合 jQuery mobile 和 asp net 网络表单 为了使我的 asp net 控件的回发正常工作 我必须禁用 ajax 页面顶部 如下所示 但是当像这样禁用ajax时 其他功能似乎不起作用 我无法从 jQuery
  • 获取 JavaScript 正则表达式中每个捕获的索引

    我想匹配正则表达式 例如 a b c d with aabccde 并获取以下信息 a at index 0 b at index 2 cc at index 3 我怎样才能做到这一点 String match 返回匹配列表和完整匹配开始的
  • 如何减少pyinstaller中的exe文件大小

    我正在尝试从 python 脚本开发 exe 文件 但其大小超过 715MB 即使我使用虚拟环境进行开发 但大小仍然很大 我在脚本中使用的这些库 import numpy as np import pandas as pd import o
  • VoIP 通知证书主题必须以“.voip”结尾,设备令牌应用程序包以“.voip”结尾

    我在 twilio 中遇到错误 说 VoIP 通知证书主题必须以 voip 结尾 设备令牌应用程序包以 voip 结尾 当我检查类似的问题时发现解决方案是更改 解决方案是 BundleID voip 我尝试在developer apple中
  • 在 Windows 中的 Android 中通过代理启用 Internet 连接

    如何在 Windows 中通过 Android 代理启用互联网连接 http www coderanch com t 462906 Android Mobile connect internet behind proxy 在早期版本的 An
  • Python:请求会话登录 Cookie

    我的目的是登录网站 然后从 python 脚本访问受保护的图像 我可以通过浏览器进行合法和工作访问 这就是我现在所拥有的 import requests s requests Session s get domain r login s p
  • cmake 安装目标中的编译时通配符

    我是 cmake 的新手 我发现它非常令人沮丧 我试图在构建运行时而不是生成构建时评估的文件路径中使用通配符 我创建了一个使用 SWIG 为某些 C 代码生成 Java 包装器的构建 我可以编写命令来生成本机代码 对其进行编译并生成工作共享
  • 奇怪的System.Format异常[重复]

    这个问题在这里已经有答案了 我只是想为我的单元测试构建一个 json 字符串 意外的是以下代码返回系统格式异常 错误消息表明它正在尝试解析日期 这对我来说很奇怪 我不是要求解析日期 class Program static void Mai
  • 通过 Json 将 javascript 数组传递给 Coldfusion CFC

    我使用此 javascript 捕获在 Flexigrid 中选中的所有复选框 并尝试将此行 id 数组发送到 CFC function removeCertidao var allVals input id certidao checke
  • 如何从数据框中删除多个标头并仅保留第一个python

    我正在使用一个包含多个标题的 csv 文件 所有标题都会重复 如下例所示 1 2 3 4 0 POSITION T PROB ID 1 2 385 2 0 1 2 POSITION T PROB ID 3 3 074 6 0 3 4 6 7
  • 全日历不显示数据

    我仍然是一个新程序员 我在让这段代码工作时遇到问题 我从here 它使用MySQL来存储数据 我想了解其中的各个部分 但我现在才真正开始了解 ajax 和 jQuery 如何协同工作 它用于显示数据 它依赖于 events php 我已经单
  • PrimeFaces 咆哮动态改变颜色

    有没有办法动态更改 PrimeFaces 咆哮组件的背景 我希望能够在出现错误时显示红色背景 在成功时显示绿色背景 提前致谢 仅当您一次仅向上下文添加一条消息时 上述解决方案才有效 如果您添加多条消息 则所有咆哮项目都将根据最后一条消息的严
  • Task.Run 和预期委托

    我不确定如何理解以下观察到的结果 var f new Func
  • 如何在 Unix 控制台或 Mac 终端上运行 shell 脚本?

    我知道 忘记了 再重新学习 是时候把它写下来了 运行不可执行的sh脚本 使用 sh myscript 运行不可执行的bash脚本 使用 bash myscript 启动可执行文件 任何具有可执行权限的文件 你只需通过它的路径指定它 foo
  • Excel VBA-打开工作簿时出现运行时错误 1004

    对 vba 来说相当新 但我编写了一个代码 可以取消合并列中的行 复制单元格 然后粘贴到不同的宏工作簿中 当我第一次运行该代码时 它运行良好 然而 我今天尝试使用它 但我很震惊我出现了错误 此错误表明无法找到目标文件名 这很奇怪 因为目标文
  • 为什么这个由 facebook 生成的深层链接 (applink) 不起作用?

    我想在我的网站上创建一个按钮 允许用户打开本机 facebook 应用程序 如果已安装 或以其他方式打开 facebook 网站 据我了解 我必须为此创建单独的 html 页面 我尝试了 Facebook 托管的应用程序链接来获取有效的应用