我有两个构建配置:App和App Stage。
每个配置都配置了不同的Associated Domains
:app.mydomain.com和app-stage.mydomain.com。
当然,每个网站都公开了不同的apple-app-site-association
文件:app.mydomain.com/apple-app-site-association和app-stage.mydomain.com/apple-app-site-association(HTTP 200,没有.json扩展名等)。 )。
问题是只有第一个注册域(不幸的是它的Stage)才能正常工作。当我安装了这两个应用时,每个深层链接(app.mydomain.com/home和app-stage.mydomain.com/home)都会打开App Stage。当我只安装了App Sage时,两个链接都会打开它。当我只安装App时,没有链接正常工作。看起来Associated Domains
的子域被忽略,只考虑mydomain.com。
我认为构建配置是正确定义的,因为我也区分了其他设置,如Facebook,Google和其他人。
你遇到过类似的问题吗?允许在Associated Domains
用法中使用同一域的不同子域吗?
更新:
按照@ clayjones94说明,我检查了每个应用程序是否使用Charles Proxy下载了正确的JSON文件。我发现App Stage正在获取正确的文件,而App不会获取任何文件。
我还在Charles的app-stage.mydomain.com/apple-app-site-association HTTP请求中编辑了URL,以确保app.mydomain.com/apple-app-site-association返回正确的JSON。当我从URL中删除-stage
并重复调用它已经获取了一个不同的JSON文件,因此我确认后端对两种配置都正常工作。
首先我认为我的构建配置不正确。所以我决定用Stage的applinks:app.mydomain.com
替换App的applinks:app-stage.mydomain.com
关联域,看看App配置是否能够获取App Stage文件。它工作正常,App下载了App Stage的JSON文件。同样,它看起来像Associated Domains
的子域被忽略,只考虑第一个注册的子域。
当涉及到Universal Links(App Domains)时,没有像域和子域概念那样的东西。我猜应该存在apple-site-association-file配置的问题。
请检查有关appID字段的apple-site-association-configurations。我怀疑你可能在两个文件中放置了相同的appID。
您应该为这两种配置使用不同的appID。
在提取Apple App Site Association文件时,您的操作系统应该单独关闭它们。我建议删除这两个应用并重新启动手机,以确保没有缓存旧的AASA文件。
当您将应用程序重新安装到手机上时,可以使用Charles Proxy查看每个安装是否正在提取正确的AASA文件。由于您的关联域中有两个URL,因此每个安装都将下拉两个AASA文件。如果你的生产应用程序没有拉下来,它可能是一个Apple issue,你只需删除该应用程序,然后再试一次。
如果您确认每个应用程序的两个AASA文件都被拉下来,那么您应该验证appID是否正确(看起来您有)。当两个应用程序同时具有关联的域和具有正确appID的两个AASA文件时,您的操作系统应根据链接打开正确的应用程序。如果这仍然无效,则可能意味着您的AASA文件已由与您的暂存应用相关联的权利签署,但不是您的生产应用。
我建议使用Branch进行通用链接。 Branch有测试链接,您可以使用它来测试您的prod应用程序的链接,您应该可以在分支上为您的临时应用程序创建一个单独的应用程序,这样您就可以拥有不同的链接。好消息是我们将为您完成所有AASA处理和签名。深层链接服务是免费的,我们执行延迟深度链接:)。