通用链接会访问我的服务器吗?

tod*_*ddg 2 node.js ios express ios-universal-links

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

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

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

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

    if ( subdomain[0] === 'subdomain'){
        response.redirect('www.linktoappstore.com');   
    } 
    ...
});
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*uer 6

这应该可以正常工作。

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

当然,这意味着您无法跟踪通用链接流量,这可能成为一个主要痛点。要解决这个问题,您需要像Branch.io(全面披露:我在 Branch 团队中)这样的东西来填充缺失的数据。

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

  • 正确,除非您以某种方式控制短 URL 域并可以在其中添加 AASA 文件! (2认同)