配置apple-app-site-association文件并上传到服务器

Configure apple-app-site-association file and upload on server

我是 iOS 开发的新手。我正在使用 ASP.net 应用程序在 iOS 应用程序中实施通用链接。
我在关联域下的功能中定义了我的关联域: applinks:www.abcd.com
并在 Apple Developer Account 的 App Ids 中配置。我认为应用程序方面的工作已经准备就绪。

但我认为 apple-app-site-association 文件有问题。

我已将 json 写入如下所示的简单文本文件中

{
  "applinks": {
    "apps": [],
    "details": [
    {
      "appID": "8T8932TY.com.AppName”,
      "paths": ["*"]
    }
    ]
  }
}

现在我被困在这里了。我的应用程序针对 iOS 9 及更高版本。我很困惑这个文件的扩展名是什么,命名为 apple-app-site-association。我是否需要使用新证书登录。以及如何在服务器端上传。

请大家帮帮我。我正在为此寻找很多但没有得到满意的答案。

谢谢

如果用 AppID/AppName 的实际值替换,您的示例 JSON 看起来不错。您可能想要具体说明您处理的路线,但这取决于您 - 只尝试处理您有机会处理的路线,而不是为每个 [=38 打开您的应用程序,这是一种更好的用户体验=] 在您的域上,如果事实并非如此,则将用户再次踢出 Safari。

apple-app-site-association 文件不应有任何文件扩展名,并且应从您站点的根目录提供服务,https://example.com/apple-app-site-association,and/or 来自 https://example.com/.well-known/apple-app-site-association

您说您支持 iOS 9 及更高版本 - 检查 .well-known 路由的更改是在 iOS 9.3 中首先检查的,所以如果您想要支持低于 OS,您最好将文件放在这两个位置。有关详细信息,请参阅

使用正确的 MIME-type 提供文件也很重要,对于通用链接,它可以作为 application/json 提供,没有必要 sign/encrypt。如果您不熟悉 Web 服务器上的配置,那么使用正确的 MIME-type 服务可能会有点烦人,因为服务器通常会根据文件扩展名确定 MIME-type。你不能给它一个扩展名,因为 iOS 不会检查带有扩展名的 url 并且 (IIRC) 重定向是不允许的,所以你也不能通过这样做来伪造它。

这就是您要完成的目标的摘要,但是您如何实现取决于您使用的网络服务器。对于可能是 IIS 的 ASP 应用程序,在这种情况下 this question and its answers 可能会帮助您正确配置 Web 服务器。如何将文件上传到该服务器的根目录的详细信息在很大程度上也取决于您的配置方式。

apple-app-site-association 文件没有扩展名。这只是一个普通文件。您必须将其托管在您的域的顶层,这意味着文件位置将是 https://www.abcd.com/apple-app-site-association 一旦您托管它,您可以 check/validate 使用此 link https://branch.io/resources/aasa-validator/

详细信息请参考:https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9/

这对我有用。

  1. 创建了一个空的 .NET Core 项目并将其部署到相应的 Azure Web 应用服务。
  2. 使用 Azure 门户中的高级工具,导航到已部署应用服务的 Kudu 文件。
  3. 在文件夹“site/wwwroot/wwwroot”中创建了一个名为“.well-known”的新文件夹。
  4. 在新创建的文件夹中,创建了一个名为“apple-app-site-association.json”的新文件。
  5. 编辑了新创建的 json 文件以保存应用详细信息。
  6. 出于以下原因修改了文件“site/wwwroot/web.config”:

a) 因为 iOS 总是调用没有提到文件扩展名的 URL (https://webapp-sftpint-employeeapp-dev.azurewebsites.net/apple-app-site-association) 我们需要强制重新写入此类 URL 以具有文件扩展名。因此,在 web.config

中添加了规则

b) 由于从静态文件“apple-app-site-association.json”返回的内容响应头应该有“application/json”, 我们添加了明确提及的 mimeType 作为“application/json”。

因此,web.config 文件看起来有点像这样。 (只需要额外添加 'rewrite' 和 'staticContent' 块)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\yourproject.dll" stdoutLogEnabled="false" stdoutLogFile=\?\%home%\LogFiles\stdout hostingModel="inprocess" />
      <rewrite>
          <rules>`enter code here`
              <rule name="apple_json_file">
                  <match url="^apple-app-site-association" />
                  <action type="Rewrite" url=".well-known/apple-app-site-association.json" />
              </rule>
          </rules>
      </rewrite>
      <staticContent>
          <mimeMap fileExtension=".json" mimeType="application/json" />
      </staticContent>      
    </system.webServer>
  </location>
</configuration>