如何在 Facebook 应用内消息上实现深层链接

Posted

技术标签:

【中文标题】如何在 Facebook 应用内消息上实现深层链接【英文标题】:How to implement deep links on Facebook in-app messages 【发布时间】:2018-12-24 13:28:29 【问题描述】:

溢出社区,

我们正在为应用开发深层链接功能,但遇到了 Facebook 推送消息的应用内消息功能的问题。

我们正在尝试发送与应用内消息按钮相关联的深层链接,但是当用户单击此类按钮时,应用所做的就是在浏览器上打开此类 url。

我们需要的是能够捕获这样的动作并解析发送的 URL (http://example.com/product?id=1234),但是,我们似乎找不到这样做的方法。

我们需要为 iosandroid 这样做,但只要我们能够解决至少一个平台的问题,我们就可以解决另一个平台的问题。

【问题讨论】:

您能否添加更多上下文? Facebook 如何适应,谁在发送链接,谁在打开链接?问题基本上是您的应用在应该打开的时候没有被某个 URL 打开吗? 嗨 @Dopapp,我们正在使用 Facebook 分析和推送通知功能向用户发送推送消息并向他们显示应用内消息 (developers.facebook.com/docs/push-notifications)。该问题与 facebook 应用内消息有关。在这样的消息中,可以添加带有相关链接的按钮(来自 facebook Web 控制台),问题是这些按钮包含像 example.com/product?id=1234 这样的链接,它为我们的应用程序定义了一个深层链接,但是当用户点击按钮时,它被定向到浏览器。我需要什么才能解析这样的意图。 浏览器是否重定向到您的应用? @Dopapp 准确地说,我希望按钮在按下时在我的应用程序中执行某些操作。 你应该阅读我上面链接到的 Medium 文章。它应该会有所帮助。 【参考方案1】:

我相信你应该尝试实现Universal Links。

【讨论】:

嗨@tal-cohen,我们正在使用firebase动态链接,它在幕后实现了通用链接。但是,当用户点击按钮时,它会被重定向到 firebase 应用预览页面,即使您在动态链接中禁用了此类页面。【参考方案2】:

您需要像这样手动获取 Deeplink 的 Firebase 实例并解析链接,而不是将您的对话框/按钮操作设置为任何值。

      FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() 
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) 
                    // Get deep link from result (may be null if no link is found)
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) 
                        deepLink = pendingDynamicLinkData.getLink();
                        Log.d("DeepLink", deepLink.toString()+pendingDynamicLinkData.zzte().toString());

                        if(deepLink.getEncodedPath().contains("mobile-app"))

【讨论】:

以上是关于如何在 Facebook 应用内消息上实现深层链接的主要内容,如果未能解决你的问题,请参考以下文章

深层链接未从 Facebook 帖子打开应用程序

在 Branch.io 中,如何在 facebook 中发布带有查询参数的深层链接

Facebook延迟深层链接不起作用

如何在iOS中为twitter和Facebook实现通用深层链接?

在 iOS 上配置 Firebase 应用后,Branch.io 深层链接停止工作

如何让 iOS 应用的深层链接在 Twitter 上运行?