通用链接会影响我的服务器吗?

Do Universal Links hit my server?

我已经在我的 iOS 应用程序上设置了通用 Links,使用我的后端的别名子域和类似 sudomain.mydomain.com 的方案。我希望没有安装该应用程序的用户被重定向到我们在 App Store 中的页面,而不是访问我们服务器上一些不存在的端点(我们没有网络应用程序,只有移动后端)。

我正在考虑做这样的事情:

app.get('*', (request, response) => {

    const domain = request.headers.host,
      subdomain = domain.split('.');

    if ( subdomain[0] === 'subdomain'){
        response.redirect('www.linktoappstore.com');   
    } 
    ...
});

不过,我不希望这会干扰安装了该应用程序的人的通用 Linking。 Universal Link get 请求是发送到我的服务器还是 iOS 在此之前拦截它们?

这应该可以正常工作。

配置通用 Link 并安装您的应用程序后,设备在启动应用程序之前不会访问服务器。这是因为 iOS 在最初安装应用程序时缓存了 apple-app-site-association 文件,如果打开的 URL 匹配那里定义的路径,通用 Links 就会启动。在在这种情况下,iOS 完全绕过任何网络请求并立即启动您的应用程序。

当然,这意味着 you can't track Universal Link traffic, which can become a major pain point. To work around this, you need something like Branch.io(完全披露:我在 Branch 团队)填写缺失的数据。

另外,如果您代理子域,请确保 iOS 不会将其视为任何类型的重定向。否则 apple-app-site-association 文件根本不会被抓取(常见的通用 Link 实施问题)。