什么是AASA(苹果应用程序站点关联)文件?

这篇文章最初发表在 分公司 博客 在这里

想象一下:您想在iOS上开始使用Universal Links,Apple的文档已要求您创建和托管AASA文件。 那么,什么是AASA文件?

AASA( apple-app-site-association的缩写是一个文件,位于您的网站上,并将您的网站域与您的本机应用程序相关联。 换句话说,这是向iOS证明域所有权的一种安全方法。 使用URI方案,这是在iOS 9之前在iOS上打开应用程序的标准方式,应用程序开发人员可以注册自己喜欢的任何URI方案,而iOS无需任何验证即可通过打开应用程序来响应那些URI方案。 例如,如果独立开发人员为测试应用程序注册了fb:// URI方案,那么即使Facebook本地应用程序使用了fb://,也没有阻止它的方法。 AASA文件使Universal Links独特且安全,因为独立开发人员无法在facebook.com域上托管AASA文件。

让我们看一下apple-app-site-association文件的一些基础知识,这些文件将帮助您在域上构建和托管一个文件。

AASA文件包含一个JSON对象,其中包含应作为通用链接包含或排除的应用程序列表和域上的URL路径。 这是一个示例AASA文件:

  1. {
  2. “应用链接” :{
  3. “应用” :[],
  4. “细节” :[
  5. {
  6. “ appID”:“ 3XXXXX9M83.io.branch-labs.Branchster”,
  7. “路径”:[“不是/ e / *”,“ *”,“ /”,“ / archives / 201?/ *]
  8. }
  9. ]
  10. }
  11. }

在AASA JSON中,每个特定于应用程序的域都包含一个appIDpath的字典。 让我们看一下AASA JSON对象中的每个键是什么:

  • applinks :由于AASA文件还可以用于其他目的(例如,共享的Web凭据),因此applinks对象定义通用链接使用的文件部分。
  • apps :apps数组必须存在,但始终为空。
  • appID :通过组合您的应用程序的Team ID *(或Apple App Prefix)和捆绑包标识符**而构建。 在上面的示例中,3XXXXX9M83是团队ID, io.branch-labs.Branchster是捆绑包ID。
  • path :字符串数组,用于指定关联中包含或排除的路径。 您可以使用NOT (在路径之前-如上面的示例JSON中)禁用路径。 在这种情况下,此路径上的所有链接都将转到网络,而不是打开应用程序。 您可以使用*作为通配符来启用目录中的所有路径,并使用 匹配单个字符(示例JSON中的/ archives / 201?/示例)。 请注意,这些字符串区分大小写,并且查询字符串和片段标识符将被忽略。

*您不是您的团队ID吗? 转到https://developer.apple.com/account并从“ 成员资格”部分检索它。

**要获取Bundle ID,请转到您的Xcode项目,选择项目,然后选择“常规”标签。

在您的域上托管AASA文件

准备好AASA文件后,您现在可以将其托管在您的域中, 网址https:// <<您的域>> / apple-app-site-associationhttps:// <<您的域>> /。well已知/ apple-app-site-association

托管AASA文件时,请确保AASA文件:

  • 通过HTTPS提供。
  • 使用application / json MIME类型。
  • apple-app-site-association文件名后没有附加.json
  • 大小不超过128 Kb(iOS 9.3.1及更高版本中的要求)。

在同一域上支持多个应用

您可以在同一域上支持多个应用程序。 为此,您需要向AASA文件中的details数组添加一个新的appID路径字典,如下所示:

  1. {
  2. “应用链接” :{
  3. “应用” :[],
  4. “细节”: [
  5. {
  6. “ appID”:“ 3XXXXX9M83.io.branch-labs.Branchster”,
  7. “路径” :[“否/ e / *”,“ *”,“ /”,“ / archives / 201?/ *”
  8. },
  9. {
  10. “ appID”:“ 3ZZZZZ9M94.io.branch-test.Branch”,
  11. “路径” :[“不/ e / *”,“ *”,“ /”,“ / archives / 200?/ *”
  12. }
  13. ]
  14. }
  15. }

如果两个或多个应用程序与网站上的相同内容路径相关联,则detail数组中的appID,paths字典的顺序将确定哪个应用程序将获得优先权。

为同一应用程序支持多个域

应用程序需要支持的每个域都必须具有自己的apple-app-site-association文件。 如果域提供的内容不同,则文件的内容也将不同以支持相应的路径。 否则,可以使用相同的AASA文件,但需要在每个受支持的域上对其进行访问。 还要注意,即使example.comwww.example.com可能提供相同的内容,您也需要确保在这两个域上都托管了AASA文件。

在Branch,我们生活和呼吸深层链接,并创建了一个AASA验证程序来帮助您构建有效的AASA文件。 您可以在这里找到它:https://branch.io/resources/aasa-validator/。

如果您使用的是Branch链接,则可以通过选中Branch仪表板上的单个框来绕过构建,验证,托管和管理AASA文件的所有步骤。 我们会为您处理所有其他事务。