从 Twitter 到我的应用程序的深层链接 - 不工作

Deep-links to my app from twitter - not working

我的清单中有以下 intent 过滤器以接受深度 link 网址:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="http" />
    <data android:scheme="https" />
    <data android:host="www.example.com"/>
    <data android:host="example.com"/>
    <data android:pathPattern="/path.*" />

</intent-filter>

点击 link 时一切正常,例如:

但是 - 在 Twitter 中,URLs 会自动缩短为如下所示:

(对不起,图片 - 所以不会让我 post 一个缩短的 link 示例...wth?)

当用户点击 link 时,这个 URL 然后被解析为真正的 URL - 但是(!!),此时 URL 是解析为与上述示例匹配的一个,android 似乎不再关心我的意图过滤器并且 URL 在浏览器中打开。

如何解决此问题,以便 URL 从 Twitter 到我的应用程序正确打开我的应用程序(或至少打开应用程序选择器)?

您是对的 — 通过应用链接,Android 检查 实际 URL 正在打开 以查看是否注册了任何应用来处理它。如果 URL 被缩短(假设缩短的域本身未注册,t.co 显然就是这种情况),则不考虑通过重定向到达的后续 URL。 iOS 通用链接的工作方式完全相同。

在 Android,您有两个选择:

  1. 将自定义 URI 方案重定向到您的目的地 URL。然后,当缩短的 link 解析时,您的用户将最终进入该应用程序。当然,您还需要 something like this to handle the app-not-installed situation. This is how we do it for Android at Branch.io(完全披露:我在 Branch 团队)。
  2. 在目标 URL 上显示深度 linked CTA button/link/smart 横幅。这就是 必须 在 iOS 上为 Twitter 和 Facebook 等应用程序工作的方式,但是在 Android 上您仍然有自定义 URI 方案选项,因此这不太理想。