【问题标题】:Apple-app-site-association is not workingApple-app-site-association 不起作用
【发布时间】:2017-02-16 13:51:23
【问题描述】:

我已经实现了apple-app-site-association 以与我的 iOS 应用程序进行深度链接。
我已经创建了没有扩展名的 .JSON 文件并放置在我网站的根目录中。
现在,我可以在任何浏览器上看到文件为 https://example.com/apple-app-site-association

以下是apple-app-site-association文件中的json主体-

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "AppID.bundleIdentifier",
                "paths": [ "*"]
            }
        ]
    }
}

仅供参考,我在我的网站(angular.js).htaccess 中添加了以下内容 -

<FilesMatch "^apple-app-site-association$"> ForceType application/json </FilesMatch>

我已经在 Xcode 和 developer.apple.com 中启用了“关联域”。
但是,当我尝试安装新版本时,它不起作用。
通过挖掘设备日志,我收到以下错误。

请查看并帮助我了解我做错了什么。

[SWC] ### 错误的苹果应用程序站点关联 JSON:错误 Domain=NSCocoaErrorDomain Code=3840 "JSON 文本不是以 允许未设置片段的数组或对象和选项。” UserInfo={NSDebugDescription=JSON 文本不是以数组开头或 允许未设置片段的对象和选项。}

【问题讨论】:

  • 嗯,这个 json 代码是我从 developer.apple.com 本身获得的。那么这怎么可能..??..如果你这么认为,那么请给我一些更正的代码,如果它适合你的话..!!!
  • @EricAya 我只是这样做了。从苹果网站复制并放置到一个空的崇高文本文件并保存为apple-app-site-association 文件。仍然不明白为什么它不起作用。您对如何调试 json 以进行正确格式化有任何想法吗??
  • @EricAya 现在我跟着你的把戏了。我已经检查了jsonlint.com 上的 json,它显示为有效的 JSON,但遇到了同样的问题。对发生的事情感到非常困惑..!!
  • 我们能在其生产位置看到实际的实时文件吗?仅供参考,其中没有机密信息 - 共享它是安全的,没有安全风险。

标签: swift ios9 ios-universal-links


【解决方案1】:

文件被适当地托管,通过以下方式确认:

curl -I https://pravin-dev.slicepay.in/apple-app-site-association

您还可以使用 Apple's Applebot 抓取您的网站以验证 apple-app-site-association。但是,这只能完全验证您的应用是否已上线。

问题可能与您的关联文件无关。您应该验证您的应用确实在检查 https://pravin-dev.slicepay.in/apple-app-site-association 而不是 https://slicepay.in/apple-app-site-association。仔细检查 Capabilities 的 Associated Domains 部分中的应用链接,并且正确生成了 .entitlements 文件。您正在使用 pravin-dev 子域 - 如果未指定,您的应用程序可能没有在正确的位置查找。

您可能知道,您必须卸载应用程序才能重新检查 apple-app-site-association。

【讨论】:

  • 它和你的一样,但仍然遇到同样的问题。请记住,我猜我在 iOS 的设备日志中收到了这个错误。
  • 我卸载并重新安装了应用程序,但我在 apple-app-site-association 中新添加的路径仍然不起作用。有什么想法吗?
【解决方案2】:

.well-known/ 添加到您的路径:

https://&lt;fully qualified domain&gt;/.well-known/apple-app-site-association

来自https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app

【讨论】:

    【解决方案3】:

    我也有这个;该文件结构正确,无论有无 .well-known 均可访问,权利正确...

    ...事实证明,关闭并打开我的设备解决了这个问题。我认为 iOS 会在重启时重新获取应用程序的通用链接。

    如果一切都失败了,请尝试将其关闭并重新打开。

    【讨论】:

    • 老兄,我希望我能在几个小时前看到这个,本可以为我节省很多时间来弄清楚我做错了什么。哈哈哈谢谢!
    【解决方案4】:

    似乎服务器以某种方式将文件作为错误类型提供。如果您尝试在 Web 浏览器 (https://branchmaps.app.link/apple-app-site-association) 中加载有效的 AASA 文件,您会看到它会立即下载,并且生成的文件没有类型。您的文件正在浏览器中显示,下载时以 JSON 文件类型出现。

    如果您将文件保存为 apple-app-site-association.json,然后删除扩展名,请尝试直接从 Atom/Sublime/whatever 中保存它,而不使用文件名,以确保操作系统不嵌入元数据。

    您还可以使用免费的深度链接平台,例如 Branch.io(完全披露:我在 Branch 团队),无需处理此服务器配置 :)

    【讨论】:

    • 我只在 sublime 中创建带有扩展名的 json 文件,并部署到我们使用 Apache 2 维护的服务器,前端是使用 Anguler 开发的。我也在 .htaccess 中使用此代码 ForceType application/json 但没有结果。
    • @bradkratky 是的,我愿意。我很抱歉——我通常记得把那个披露放在里面,但不知何故在这里错过了:(。现在修复了
    • @unexpectedNil 我想知道您的&lt;FilesMatch&gt; 表达式是否在某种程度上不匹配。尝试使用更简单的&lt;Files&gt; 表达式怎么样? &lt;Files "apple-app-site-association"&gt; ForceType application/json &lt;/Files&gt;
    • @AlexBauer 不用担心,谢谢。刚刚从答案中得到了这种感觉!我认为他的 json 设置正确,curl 为我产生了正确的内容类型
    • 各位感谢您的努力。我会尽力按照你们说的去做,并会让你们知道...:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2016-03-13
    • 2022-07-29
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多