【问题标题】:How to upload file apple-app-site-association for universal linking in server for iOS app?如何在 iOS 应用程序的服务器中上传文件 apple-app-site-association 以进行通用链接?
【发布时间】:2016-05-08 06:20:07
【问题描述】:

apple-app-site-association文件上传到服务器的流程是什么? stg1.example.com 是需要进行通用链接的网站,文件应该上传到它的根路径。如何在iOS中使服务上传以进行通用链接。如何在服务器上传json格式的文件?

【问题讨论】:

    标签: ios ios9 ios-universal-links


    【解决方案1】:

    apple-app-site-association 文件需要通过HTTPS 访问,无需任何重定向,位于 https://stg1.example.com/apple-app-site-association

    文件如下所示:

    {
    "applinks": {
        "apps": [ ],
        "details": [
            {
                "appID": "{app_prefix}.{app_identifier}",
                "paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
            },
            {
                "appID": "TeamID.BundleID2",
                "paths": [ "*" ]
            }
        ]
    }
    }
    

    example中的演示文件

    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "M8HBL5W4VV.com.Universal-Links",
                    "paths": [ "/iOS-Universal-Links/*"]
                }
            ]
        }
    }
    

    注意 - 不要将.json 附加到apple-app-site-association 文件名。

    键如下:
    apps:应该有一个空数组作为它的值,并且它必须存在。这就是 Apple 想要的方式。
    details:是一个字典数组,每个网站支持的 iOS 应用都有一个字典。每个字典都包含有关应用程序、团队和捆绑包 ID 的信息。

    定义路径有 3 种方法:
    Static:整个支持的路径都经过硬编码以识别特定链接,例如/static/terms
    Wildcards: A * 可用于匹配动态路径,例如/books/* 可以匹配任何作者页面的路径。 ?在特定路径组件内,例如书籍/1?可用于匹配 ID 以 1 开头的任何书籍。
    Exclusions:在路径前添加 NOT 会排除匹配该路径。

    在数组中提及路径的顺序很重要。较早的指数具有更高的优先级。一旦路径匹配,评估将停止,其他路径将被忽略。每个路径都区分大小写。

    支持多个域

    应用支持的每个域都需要提供其自己的 apple-app-site-association 文件。如果每个域服务的内容不同,那么文件的内容也会改变以支持各自的路径。否则,可以使用相同的文件,但需要在每个受支持的域都可以访问它。

    使用 Apple 应用搜索验证工具验证您的服务器
    针对 iOS 9 搜索 API 测试您的网页。输入 URL,Applebot 将抓取您的网页并展示如何优化以获得最佳结果 https://search.developer.apple.com/appsearch-validation-tool/

    网站代码

    网站代码可以在 gh-pages 分支上找到 https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages


    签署 App-Site-Association 文件(对于不是 HTTPS 服务器的)

    注意如果您的服务器使用HTTPS 提供内容并跳转到应用程序设置指南,您可以跳过此部分。

    如果您的应用以 iOS 9 为目标平台,并且您的服务器使用 HTTPS 提供内容,则您无需签署文件。如果不是(例如在 iOS 8 上支持 Handoff 时),则必须使用来自公认证书颁发机构的 SSL 证书对其进行签名。

    注意:这不是 Apple 提供的用于将您的应用提交到 App Store 的证书。它应该由第三方提供,并且建议使用与 HTTPS 服务器相同的证书(尽管不是必需的)。

    要签署文件,首先创建并保存一个简单的 .txt 版本。接下来,在终端中,运行以下命令:

    cat <unsigned_file>.txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > apple-app-site-association
    

    这将在当前目录中输出签名文件。 example.com.keyexample.com.pemintermediate.pem 是您的认证机构将提供给您的文件。

    注意:如果文件是未签名的,它应该有一个Content-Typeapplication/json。否则,应该是application/pkcs7-mime


    在这里查看我的完整详细答案

    How to support Universal Links in iOS App and setup server for it?

    【讨论】:

    • 注意:根据网上的说法,文件的内容类型应该是application/pkcs7-mimegist.github.com/anhar/6d50c023f442fb2437e1
    • 如何将内容类型赋予 apple-app-site-association 文件?
    • @151291 你不需要给它任何内容类型。只需将其保存为名称apple-app-site-association。并且apple-app-site-association 文件需要通过HTTPS 访问,无需任何重定向,https://stg1.example.com/apple-app-site-association
    • 我的文件 (apple-app-site-association) 没有签名,可以吗?
    • 是的。但请确保需要通过 HTTPS 访问 apple-app-site-association 文件
    猜你喜欢
    • 2021-07-29
    • 2019-09-21
    • 1970-01-01
    • 2020-11-03
    • 2017-07-11
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多