【问题标题】:Universal Deeplinking issue通用深度链接问题
【发布时间】:2018-06-04 04:19:12
【问题描述】:

我已经处理了苹果开发者文档中提供的有关通用深度链接的所有步骤,但它仍然无法正常工作。

我都试过了。

1- 在我的 appId 上添加了关联域。(在 developer.apple.com 上)

2- 下载并使用新的配置文件。

3- 通过提供有效路径在 xcode 项目中启用深层链接。

4- 创建 apple-app-site-association 文件并添加详细信息,就像在开发人员文档中提到的那样。

5- 将该文件托管到我的服务器

之后如开发者文档中所述,在设备上安装应用程序时,它将下载该文件,这正在发生,我可以在我的服务器上看到日志(该文件的 200 状态代码)

它仍然无法正常工作。

除了我在开发人员文档中注意到的所有内容之外,还提到了以下内容。

apple-app-site-association 可以创建为纯文本文件,但它应该 application/json 为 MIME 类型。这是我现在唯一感到困惑的事情。因为当我在服务器上检查当前文件的 MIME 类型时,什么都没有发生。

这是问题吗?如果是,那么如何设置文件的 MIME 类型?

如果没有,请告诉我我还缺少什么。

提前致谢。

【问题讨论】:

    标签: ios swift deep-linking


    【解决方案1】:

    我的直觉是还有别的东西在起作用。 application/json 只是表示 Apple 会将这个文件解释为 JSON 对象。以下是我的一些建议:

    1) 确保您的 AASA 文件格式正确,并且 appID 与您的项目的应用 ID 后跟包 ID 匹配,如我的示例。我只是从这种 AASA 格式开始,然后从那里开始。

    {
        "applinks":
           {
               "apps":[],
               "details":[
                           {
                              "appID":"CXXXXXXXXD.com.deep.linked.Deep-Linked-Dogs",
                              "paths":["NOT /e/*","*","/"]
                            }
                         ]
           }
    }
    

    2) 确保您的权利文件包含在您的项目中。这是下载 AASA 所必需的。确保您的域是正确的。

    3) 检查您的手机是否运行 iOS 11.2。此版本的 iOS 有时在实际下载 AASA 文件时遇到问题。要解决此问题,您应该删除应用程序,重新启动手机,然后重新安装。我建议使用 Charles Proxy 来检查手机是否真的在下载 AASA 文件。

    4) 检查您是否在应用中禁用了通用链接(可能不是您的问题,但请检查)。为此,您可以将链接复制到 Notes 应用程序中,然后长按它以提示操作表。如果您看到“在应用程序名称中打开”,那么您可以选择它来打开该应用程序的通用链接。如果您没有看到,则说明 AASA 文件未下载或配置不正确。

    5) 使用Branch's iOS SDK 进行深度链接。它将为您节省大量的调试时间。他们为您处理 AASA 文件,并提供延迟深度链接解决方案和其他极端情况。

    【讨论】:

      【解决方案2】:

      如果是,我该如何设置文件的 MIME 类型?

      您可以在服务器的响应中设置它。

      var aasa = fs.readFileSync(__dirname + '/static/apple-app-site-association');
      app.get('/apple-app-site-association', function(req, res, next) {
           res.set('Content-Type', 'application/json');
           res.status(200).send(aasa);
      });
      

      此示例位于 Express.js 中,来自 Branch。该链接有一个分步指南,我认为这对您很有用。

      【讨论】: