9

Android 和 iOS 的 Firebase 动态链接的行为是否不同?如何为 iOS 中的不同目标实现同一项目的 Firebase 动态链接?

在 Android 中,Firebase 动态链接适用于不同的风格,但在 iOS 中,Firebase 动态链接不适用于不同的目标。

对于 iOS,对于具有不同目标的同一项目,我必须为 Firebase Dynamic-Links with Firebase 实施什么?

Android 和 iOS 的 Firebase 动态链接行为不同的实际原因是什么?要为不同的目标实现 Firebase 动态链接,我是否必须为同一个应用程序创建一个单独的项目?

4

4 回答 4

9

TLDR

Firebase 动态链接不支持对同一 Firebase 项目中包含的多个 iOS 应用/目标使用相同的 URL 前缀。虽然有多种解决方法:


解决方案 1:使用多个(子)域

如果每个 iOS 应用程序使用自己的(子)域进行动态链接,它就可以工作。例如,不要只pets.page.link用于所有目标,而是cats.page.link用于您的第一个应用目标和dogs.page.link第二个应用目标。对此的关键要求是您的每个目标Associated Domains Entitlement仅包含它应该收听的(子)域。

就个人而言,我正在使用这个解决方案,它工作得很好。

解决方案 2:使用自定义域

如果您坚持对所有目标使用相同的域,您应该能够通过使用自定义域以及一些额外的工作来解决这个问题。

按照官方文档设置自定义域,my-own-fancy-pet-app.com而不是使用 Firebase 原生提供的任何 URL 前缀(如pets.page.link)。

创建firebase.json文件时,不要使用建议的"appAssociation": "AUTO",选项,而是将其设置为NONE. 这将阻止 Firebase 自动创建有问题的apple-app-site-association文件(以及assetlinks.json. 改为使用 Firebase 托管来提供手动创建的版本。然后,您可以使用apple-app-site-association来根据需要对其进行配置,即仅将特定路径重定向到每个目标,而不是将所有路径匹配到所有目标。

免责声明:我没有测试过这种方法,因为在我的案例中,额外的工作不值得。

解决方案 3:使用多个 Firebase 项目

当然,您可以简单地为每个目标创建一个新的 Firebase 项目。您不能在多个项目中使用相同的(子)域,因此您被迫隐式实施解决方案 1。


背景

为什么它可以在 Android 上运行,但不能在 iOS 上运行?

在 Android 上,所需的assetlinks.json文件映射完整的域,包括 Android 应用程序(或风味)列表的所有路径。特定应用程序是否支持特定链接,由通过在 Android 清单文件中本地路由所需路径来确定。

在 iOS 上,情况正好相反:所需的apple-app-site-association文件确定哪些路径与哪些应用程序匹配。不幸的是,在使用 Firebase 动态链接时,您并不负责此文件,并且 Firebase 只是将 URL 的所有路径匹配到 Firebase 项目中包含的所有应用程序。在本地,您只能配置Associated Domains Entitlement您的 iOS 应用程序。但是,后者只处理包括所有路径的完整域。

Firebase 动态链接限制

不幸的是,官方文档中的任何地方都没有提到这个限制。但是,它已被确认,例如此处此处。如第一个链接中所述,他们曾经计划添加此功能,但看起来他们仍然没有。我将联系支持人员要求更新,并要求他们至少在文档中添加适当的提示。


PS:我知道这是一个很老的问题,在提问的时候情况可能有点不同。不过今天仍然是个问题。

于 2020-04-14T13:20:17.253 回答
1

@VishalPatoliyaツ 我向 Firebase 开发人员询问了这件事,他们说这个功能不在他们的待办事项列表中)并提出请求支持论证为什么需要这种可能性。也许它有时会被实施......

...虽然通用链接有多个应用程序支持。在这里您可以了解它是如何工作的:在支持通用链接的两个不同应用程序上支持同一个域..?

于 2018-09-12T09:03:42.880 回答
0

如果您希望它们获得不同的应用程序域,则需要在 Firebase 中为每个目标创建不同的项目。如果不这样做,则它们无法通过 iOS 的通用链接系统进行区分。

这意味着您不能创建包含多个应用程序的单个项目。

于 2017-04-19T13:28:00.330 回答
0

对于深度链接,您将使用应用程序的捆绑标识符。您的其他目标将具有不同的标识符。在 Info.plist 中使用 UIApplicationShortcutItems 并在相应的 plist 文件中为您的深层链接衬衫剪裁添加条目。

于 2017-01-11T05:07:58.647 回答