49

我已经在我的设备上本地开发并安装了一个 iOS 应用程序。

并在 info.plist 中将自定义方案设置为mydlink

设置关联域:applinks:<myapp>.app.goo.gl

在firebase上创建动态链接为:

https://<myapp>.app.goo.gl/?link=http://<mysite.com>/&ibi=<app bundle id>&ius=mydlink&ifl=https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id%3D<app store id>%26mt%3D8&pt=<app store id>

当我打开或单击动态链接时,它会在“App Store”应用程序中打开应用程序页面,并且不会打开应用程序本身,尽管它已安装。

我在这里想念什么?

4

22 回答 22

20

有时我们在关联域权利中犯了一个错误。必须没有空格

applinks:mydomain.page.link
于 2018-07-11T10:48:12.027 回答
19

如果您使用的是 iOS 9,则将使用通用链接。通用链接在很多情况下都不起作用,例如:

  • 如果您使用模拟器
  • 如果您尝试直接在设备上的 safari 中打开链接(在浏览器的地址字段中输入)

我花了很多时间尝试这个,但永远无法让它以可靠的方式在模拟器上工作。我最终要做的是将链接通过电子邮件发送给我并从收件箱中打开它。然后它每次都有效!

于 2016-07-07T09:06:27.453 回答
16

对于迟到的回复,我深表歉意 - 我希望您的问题已得到解决,并且这对可能遇到相同问题的其他人有所帮助。

iOS 9+ 实际上可能存在一个或多个问题;Dynamic Links 依赖 Apple 的 Universal Links 在 iOS 9+ 上打开应用,这些建议旨在解决 Universal Links 和 Firebase 的问题,与 SDK 没有直接关系。

  1. 在 https:// app_id .app.goo.gl/apple-app-site-association验证 assoc 文件是否正确- 它应该类似于https://maps.app.goo.gl/apple-app-site -关联,但“详细信息”中只有一个元素。
  2. 正如另一个答案所指出的,请验证您的团队 ID 是否已在 Firebase 控制台中正确设置。
  3. 如果您长按该链接然后单击“在 Safari 中打开”,或者您在应用通过通用链接打开后单击了应用状态栏上的“goo.gl>”按钮,则 iOS 默认为打开Safari 中的通用链接。这可以通过下拉在 Safari 中打开的页面并单击智能横幅上的“在应用程序中打开”(或类似内容)来解决。

“ibi”参数不涉及在 iOS 9+ 的安装后点击中打开应用程序,但在未设置“ius”参数的早期版本中。

关于iOS 8,您可以尝试运行应用程序,然后在安装应用程序后单击链接吗?在 iOS 9 之前的版本中,您可以通过将链接复制/粘贴到 safari 中进行测试。

https://firebase.google.com/docs/dynamic-links/ios

于 2016-07-06T21:49:52.817 回答
11

以防万一仍有人遇到此问题,请注意以下内容

  1. 动态链接现在在模拟器上打开,请自由复制您的链接并粘贴到模拟器中的 safari 上。
  2. Chrome 和 safari 以不同的方式打开动态链接,safari 仅使用通用链接,而 chrome 使用 url 方案和通用链接来打开动态链接。最终,您应该尝试通过应用中的通用链接打开动态链接。

  3. 如果您的动态链接路由到 App Store 而不是打开您的应用程序。您的通用链接有问题。您可以暂时使用 chrome 进行测试。

    要通过通用链接设置打开动态链接,请检查以下内容

于 2020-06-07T11:47:26.113 回答
9

我在使用 iOS 14 时遇到问题,在设备上以调试模式运行。Link 总是将我重定向到 AppStore 应用程序而不是我的应用程序。解决方案是在 iPhone Settings>Developer>Associated Domains Development 上启用“Associated Domains Development”(在这里找到它: https ://stackoverflow.com/a/63939770/6689321 )。 设置 开发商

于 2021-01-13T09:02:36.783 回答
7

我遇到了同样的问题。有趣的是,如果您在 Chrome 中打开动态链接,应用程序会直接成功启动。但在 Safari 中,它总是会尝试打开 AppStore,尽管应用程序已安装。我不知道为什么 Safari 在这种情况下不起作用。

于 2017-07-18T12:53:38.303 回答
5

我犯了一个错误,没有为 DEBUG 设置关联域,因此请确保您设置了所有 DEBUG 和 RELEASE 的关联域

在此处输入图像描述

于 2020-11-07T14:39:10.737 回答
5

如果上述解决方法都不适合您,请检查您是否在关联域中添加了活动延续。

下图显示了您必须添加的确切位置(如果您还没有这样做)

于 2019-03-08T03:35:59.143 回答
3

由于 Firebase 在设置过程中的假设存在问题,Firebase 动态链接对我们不起作用(在使用通用链接的 iOS9 上)。以下是我们解决应用程序问题的方法:

Firebase 在将您的 iOS 应用程序添加到 Firebase 控制台项目设置时会询问您的“团队 ID”,它假定您的唯一应用程序 ID 将采用 TeamID.com.foo.bar 格式

但是,在我们的例子中,这不是我们唯一的应用 ID。当我查看我们的配置文件时(在 developer.apple.com 上,我找到了我们的配置文件并单击“编辑”),我看到我们唯一的应用 ID 实际上是 SomethingElse.com.foo.bar

我必须进入 Firebase 控制台并在它询问团队 ID 的位置输入“SomethingElse”,即使那不是我们的团队 ID。一旦我进行了更改,Firebase 动态链接就开始正常工作。

Firebase 似乎假设您的唯一应用 ID 将始终以您的团队 ID 开头,但显然并非总是如此。

请注意,更改您的团队 ID 可能需要很长时间才能生效。您可以通过检查您的 app_id ( https://app_id.app.goo.gl/apple-app-site-association )的相应链接来查看更改已经发生。

于 2016-10-04T23:55:26.360 回答
2

我对最新的flutter sdk和firebase动态链接插件有同样的问题。

尝试了所有解决方案,唯一的解决方法是手动将com.apple.developer.associated-domains密钥插入ios/Runner/Running.entitlements文件

<key>com.apple.developer.associated-domains</key>
<array>
  <string>applinks:abc.page.link</string>
</array>
于 2020-08-26T02:41:15.847 回答
2

集成 Firebase 动态链接后,示例链接立即开始在装有 iOS 8 的设备上工作。对于 iOS 9 设备,使用通用链接机制,如其他答案所述。这意味着 Apple 需要更新用于验证深度链接双重身份验证的授权数据。根据 Apple 的App Search API Validation Tool ,这可能需要 48 小时。

这里有更多通用链接故障排除技巧。

于 2016-08-30T13:22:52.027 回答
2

遇到了同样的问题。

我的解决方案是使用

标识符 -> 应用程序 ID -> 'my.app.ID' -> 前缀

您可以在以下位置找到它:https ://developer.apple.com/account/ios/identifier/bundle

而不是我使用的'DevelopmentTeam'数字并将其添加到Firebase 控制台中的 iOS 应用程序中。.pbxprojTeam ID

并且不要忘记下载并添加一个新的 .plist 到项目中。

于 2018-11-14T15:01:18.800 回答
2

我有好消息。

我总是听说在模拟器上测试动态链接是不可能的。

现在我们可以在模拟器上测试 firebase 动态链接

https://stackoverflow.com/a/56385506/6273003

于 2019-05-31T00:23:58.913 回答
1

当链接在 safari 中打开时,它会显示一个“打开(项目名称)”按钮。如果按住此按钮 2-3 秒,它会要求首次将其打开到不同的应用程序中。它还会显示您的应用程序名称。如果您选择您的应用程序,它会打开您的应用程序。之后,如果您再次打开此链接并在 safari 中按下按钮,它总是可以正常工作。

这解决了我的问题。

于 2018-01-16T11:48:34.683 回答
0

在您的 Xcode 项目中设置正确的表单来声明关联域,您必须包含应用链接:

在此处输入图像描述

于 2022-03-02T20:59:32.167 回答
0

我遇到了问题,AASA 文件在各个位置不同

[domain]/.well-known/apple-app-site-association
[domain]/apple-app-site-association

来自分支的验证器总是检查不知名路径上的文件。这令人困惑,因为它总是说一切都很好,即使不是。

对于 Firebase,检查您的托管并在公共目录中搜索 .well-known 文件夹。就我而言,我可以删除它,运行firebase deploy --only hosting并让 Firebase 为我生成所有 AASA 文件。

https://branch.io/resources/aasa-validator/

于 2021-02-08T08:22:11.390 回答
0

如果你确定你在 xcode 中的所有动态链接配置​​都是正确的,链接很好,但它仍然会打开 Appstore,你可以试试这个技巧:

  1. 复制链接并将其粘贴到笔记应用程序中
  2. 长按笔记中的链接以查看上下文菜单
  3. 如果您看到“在YourAppName中打开”按钮,请尝试按下它。
于 2021-04-01T19:40:50.460 回答
0

请同时检查相关域:applinks:.app.goo.gl 是否正确?并且动态链接很容易在 iOS Simulator 上工作,我没有遇到任何问题。

于 2021-09-21T08:07:13.270 回答
0

确保您在 Firebase 控制台中为您的应用设置了团队 ID。(然后您需要下载并导入 .plist 文件)。

这解决了我的问题。

于 2016-06-27T23:40:45.920 回答
0

我有同样的情况,它在深度链接 url 上定义的 ios 应用程序后修复;

Dynamic Links -> choose your link -> Edit

确保您已定义 ios 应用程序;

在此处输入图像描述

于 2020-04-13T10:21:35.000 回答
0

我们遇到了类似的问题。在我们的案例中,问题是生成带有链接的电子邮件的软件生成了一个新链接,该链接具有 304 重定向到我们的深层链接。这在 Safari 中不起作用(但在 Chrome 中)。

检查您的深层链接是否实际上是您单击电子邮件中的链接时打开的第一个链接。

于 2019-12-09T21:21:03.890 回答
0

在 Firebase 和 Xcode 项目中完成设置后。

在 SceneDelegate 中添加以下代码,而不是 AppDelegate。

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
if let incomingURL = userActivity.webpageURL {
    print("Incoming URL is \(incomingURL)")
    let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
        guard error == nil else{
            print("Found an error! \(error!.localizedDescription)")
            return
        }
        if let dynamicLink = dynamicLink {
            self.handleIncomingDynamicLink(dynamicLink)
        }
    }

}

于 2021-09-02T12:59:55.003 回答