【问题标题】:Configure apple-app-site-association file and upload on server配置apple-app-site-association文件并上传到服务器
【发布时间】:2017-07-11 06:50:30
【问题描述】:

我是 iOS 开发的新手。我正在使用 ASP.net 应用程序在 iOS 应用程序中实现通用链接。
我在关联域下的功能中定义了我的关联域: 应用链接: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。如果我需要使用新证书登录。以及如何在服务器端上传。

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

谢谢

【问题讨论】:

  • 长话短说,apple-app-site-association 文件没有文件扩展名

标签: ios ios-universal-links


【解决方案1】:

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

apple-app-site-association 文件不应有任何文件扩展名,并且应从您网站的根目录https://example.com/apple-app-site-association 和/或https://example.com/.well-known/apple-app-site-association 提供。

您说您支持 iOS 9 及更高版本 - 检查首先检查的 .well-known 路由的更改出现在 iOS 9.3 中,因此如果您想支持该操作系统以下,您最好将文件放在两个位置。详情请见this answer

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

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

【讨论】:

  • 你好@Josh 我已经设置了苹果应用站点关联文件的 MIME 类型。所有设置看起来都不错。但是,当我单击链接应用程序未打开并且该 url 在 safari 中打开时。请提出任何可能的错误
  • 有许多可能的问题,可能是您打开链接的位置 - 例如即使正确设置了通用链接,Safari 中的链接也不会总是将您踢出应用程序。尝试向自己发送带有支持链接的 iMessage,然后从那里关注它。
  • This answer 详细说明了实际关注通用链接时可能出现的一些问题。
  • 我尝试过使用 ASP MVC 从动态路由提供它(我猜 应该 也可以工作)。到目前为止它没有工作,但我不知道为什么...... Safari 理解它是一个应用程序链接,但它显示一个标准的应用程序图标,它说:data- Zero KB。去图...据我所知,我的关联文件没问题。
  • 您可以通过<Files apple-app-site-association>ForceType application/json</Files>使用 htaccess 文件添加 mime
【解决方案2】:

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

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

【讨论】:

  • 我已通过提供验证器进行了检查,它显示一切正常,但显示一个错误 www.abcxyz.com – 此域存在一些验证问题。你能帮我看看这里缺少什么吗?谢谢回答
  • @DaveC 如果存在一些验证问题,验证器会在下方显示“...此域存在一些验证问题”的位置提供详细信息
【解决方案3】:

这对我有用。

  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>

【讨论】:

    猜你喜欢
    • 2018-01-05
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2016-01-06
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多