如何使用我自己的域名缩短 Firebase Dynamic Link
How to shorten a Firebase Dynamic Link using my own domain name
我正在尝试在 iOS 应用程序中实施 Firebase Dynamic Links。目标是为营销目的提供干净的 URL,以便人们可以在社交媒体上分享 link。我的想法是人们会分享以我的域名开头的干净 URL。
当点击 link 后安装应用程序时,我们希望能够通过查看 Firebase 提供的有效负载来跟踪谁推荐了应用程序安装。我认为这个目标类似于 Firebase 的 use case 将网络用户转换为移动应用程序用户。
我想在社交媒体上分享的一个例子link是:http://example.com/my-payload-here
我已经尝试了几种情况,但在任何情况下都无法获得我正在寻找的行为。有人成功实施过吗?
这是我的测试程序:
- 卸载应用程序
- 在 iMessage 中将要测试的 link 发送给自己
- 点击我的 iOS 设备上的 link(不使用模拟器)
- 从 App Store 安装应用程序
- 下载完成后点击 App Store 中的 "Open" 按钮启动应用程序
以下是我的发现:
从 Firebase 控制台生成的简短 link (https://xyz.app.goo.gl/ABCD) - Link 在 App Store 中打开。我安装应用程序。当我在安装后启动应用程序时,有效负载未交付。如果我退出应用程序,返回到 iMessage 中的 link,然后再次启动,负载就会被传送。
Long link 与在#1 中生成的 link 来自 Firebase 控制台的 "Long Dynamic Link" 相同( https://xyz.app.goo.gl/?link=http://example.com/my-payload-here&isi=12345&ibi=com.example.MyApp) - 行为与#1
相同
短 link 使用我的域 (http://example.com/redirect/my-payload-here,配置为 301 重定向到 #2 中的 URL) - 在 App Store 中打开。我安装。当我在安装后启动应用程序时,有效负载未交付。如果我退出应用程序,返回到 iMessage 中的 link,然后再次启动,link 仍会转到 App Store。
我有一些问题:
- 为什么情况 1 和情况 2 的有效载荷没有在第一次发射时交付?
- 我们如何才能启动应用程序并交付有效负载而不是转到 App Store?
我也参考了Firebase flowchart案例2的深度link
Firebase 目前无法做到这一点。 如果您需要白标 URLs,您要么需要 build it yourself or use a more powerful link platform like Branch.io(完全披露:我是在 Branch 团队)。
具体回答您的问题:
- 我已经在测试台应用程序中实施了 Firebase 动态链接,并且可以确认 link 第一次通过安装 对长短期都有效 URL 变体。您的 AppDelegate 配置可能有问题,如果您想共享代码,我们可以查看一下。
- Firebase 目前不支持自定义域。理论上(如果你能解决上面的第一个问题)你可以像你试过的那样使用重定向来使它在第一次安装时工作。但是,一旦安装了应用程序,您将永远无法通过 Firebase link 数据 启动应用程序 。这是因为通用链接基于 link 的域工作,甚至不请求 Web 目标。即使您在自己的域上手动启用通用链接,应用程序也会立即打开而无需调用 Firebase,并且永远不会设置 link 数据。
Google Firebase 团队向动态 Links 添加了对自定义子域的支持。
您现在可以为动态 Link 指定最多五个自定义 page.link 子域。使用这些新的自定义子域的简短 link 类似于以下示例:https://example.page.link/abcXYZ
Firebase Dynamic Link 分配给项目的域目前无法删除。(firebase 团队正在努力。)
您现在可以将 URL 模式列入白名单,这些模式可用作动态 Link 的深度 link (link) 或回退link (ifl, ipfl, afl, ofl)。如果您定义白名单,动态 Links 将不会重定向到与白名单模式不匹配的 URLs。
您可以在 Firebase console.
中尝试这两个功能
我正在尝试在 iOS 应用程序中实施 Firebase Dynamic Links。目标是为营销目的提供干净的 URL,以便人们可以在社交媒体上分享 link。我的想法是人们会分享以我的域名开头的干净 URL。
当点击 link 后安装应用程序时,我们希望能够通过查看 Firebase 提供的有效负载来跟踪谁推荐了应用程序安装。我认为这个目标类似于 Firebase 的 use case 将网络用户转换为移动应用程序用户。
我想在社交媒体上分享的一个例子link是:http://example.com/my-payload-here
我已经尝试了几种情况,但在任何情况下都无法获得我正在寻找的行为。有人成功实施过吗?
这是我的测试程序:
- 卸载应用程序
- 在 iMessage 中将要测试的 link 发送给自己
- 点击我的 iOS 设备上的 link(不使用模拟器)
- 从 App Store 安装应用程序
- 下载完成后点击 App Store 中的 "Open" 按钮启动应用程序
以下是我的发现:
从 Firebase 控制台生成的简短 link (https://xyz.app.goo.gl/ABCD) - Link 在 App Store 中打开。我安装应用程序。当我在安装后启动应用程序时,有效负载未交付。如果我退出应用程序,返回到 iMessage 中的 link,然后再次启动,负载就会被传送。
Long link 与在#1 中生成的 link 来自 Firebase 控制台的 "Long Dynamic Link" 相同( https://xyz.app.goo.gl/?link=http://example.com/my-payload-here&isi=12345&ibi=com.example.MyApp) - 行为与#1
相同
短 link 使用我的域 (http://example.com/redirect/my-payload-here,配置为 301 重定向到 #2 中的 URL) - 在 App Store 中打开。我安装。当我在安装后启动应用程序时,有效负载未交付。如果我退出应用程序,返回到 iMessage 中的 link,然后再次启动,link 仍会转到 App Store。
我有一些问题:
- 为什么情况 1 和情况 2 的有效载荷没有在第一次发射时交付?
- 我们如何才能启动应用程序并交付有效负载而不是转到 App Store?
我也参考了Firebase flowchart案例2的深度link
Firebase 目前无法做到这一点。 如果您需要白标 URLs,您要么需要 build it yourself or use a more powerful link platform like Branch.io(完全披露:我是在 Branch 团队)。
具体回答您的问题:
- 我已经在测试台应用程序中实施了 Firebase 动态链接,并且可以确认 link 第一次通过安装 对长短期都有效 URL 变体。您的 AppDelegate 配置可能有问题,如果您想共享代码,我们可以查看一下。
- Firebase 目前不支持自定义域。理论上(如果你能解决上面的第一个问题)你可以像你试过的那样使用重定向来使它在第一次安装时工作。但是,一旦安装了应用程序,您将永远无法通过 Firebase link 数据 启动应用程序 。这是因为通用链接基于 link 的域工作,甚至不请求 Web 目标。即使您在自己的域上手动启用通用链接,应用程序也会立即打开而无需调用 Firebase,并且永远不会设置 link 数据。
Google Firebase 团队向动态 Links 添加了对自定义子域的支持。
您现在可以为动态 Link 指定最多五个自定义 page.link 子域。使用这些新的自定义子域的简短 link 类似于以下示例:https://example.page.link/abcXYZ
Firebase Dynamic Link 分配给项目的域目前无法删除。(firebase 团队正在努力。)
您现在可以将 URL 模式列入白名单,这些模式可用作动态 Link 的深度 link (link) 或回退link (ifl, ipfl, afl, ofl)。如果您定义白名单,动态 Links 将不会重定向到与白名单模式不匹配的 URLs。
您可以在 Firebase console.
中尝试这两个功能