当前位置: 首页 > news >正文

关于ios Universal Links apple-app-site-association文件 Not Found的问题

1. 背景说明

1.1 Universal Links 是什么


Support Universal Links 里面有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是

当您支持通用链接时,iOS 用户可以点击指向您网站的链接,并无缝重定向到您安装的应用程序

大白话就是说,用户通过点击某个链接,可以直接唤起对应的app。提供这样功能的目的是为了吸引网络用户(俗称引流)

1.2 Universal Links 如何配置

在这里插入图片描述
简单的来说,配置Universal Links需要涉及到两方面:域名服务器和app:

① 域名服务器上要配置apple-app-site-association文件 (也被称为AASA文件)

创建apple-app-site-association文件后,将其上传到 HTTPS Web 服务器的根目录或子目录.well-known。该文件需要可通过 HTTPS 访问(无需任何重定向),地址为https:///apple-app-site-association或https:///.well-known/apple-app-site-association。接下来,您需要处理应用程序中的通用链接

即配置成以后,有3个链接要访问成功才可以:

https://你的域名.com/apple-app-site-association
https://你的域名.com/.well-known/apple-app-site-association
https://app-site-association.cdn-apple.com/a/v1/你的域名.com

最后一个链接是苹果CDN链接,可以理解为只要这个地址像下图一样返回正常,就说明我们配置的AASA文件没有问题
在这里插入图片描述

② app上要在Xcode的Associated Domains里面去配置applinks
在这里插入图片描述
在这里插入图片描述

两方面都要配置好,才能正常使用Universal Links 唤起app。配置OK后,可以在钉钉、微信、safari浏览器、扫描器等里面直接通过配置的域名唤起app。

2. 问题出现与调试

昨天17点的时候,发现Universal Links 无法正常唤起app了。打开那3个链接进行调试,发现只有前个是可以正常访问的。

https://你的域名.com/apple-app-site-association
https://你的域名.com/.well-known/apple-app-site-association
https://app-site-association.cdn-apple.com/a/v1/你的域名.com

第三个显示Not Found
在这里插入图片描述
在shell里面运行:

curl -v  https://app-site-association.cdn-apple.com/a/v1/你的域名.com

可以看到该请求的详细信息:
在这里插入图片描述

< Apple-Failure-Details: {"status":"405 Not Allowed"}
< Apple-Failure-Reason: SWCERR00101 Bad HTTP Response: 405 Method Not Allowed

3. 修复总结

  1. 这个Universal Links 之前一直能正常访问,ios app发版也没有动过相关配置。为什么就失效了呢

  2. 前2个链接是可以正常访问的,即apple-app-site-association的配置是ok的。问题出在最后一个连接上,Not Allowed 可能是我们的服务器不允许app-site-association.cdn-apple.com访问

  3. 联想到前几天服务器受到了攻击,所以运维调整了安全策略,有时候在我们的域名下可以安全提示。和运维确认以后,得知运维禁止了所有的国外ip访问

  4. 但是在运维放开以后,访问

https://app-site-association.cdn-apple.com/a/v1/你的域名.com

依然是 Not Found,似乎没有任何变动。

  1. 正好那个时间还有几分钟就下班了,还要取写每日云效和日报,就先没管这个了。今天上班以后,发现链接可以访问了。

    回想可能是缓存问题,之前配置AASA文件的时候,就了解到AASA文件文件是有缓存的,或者说是apple CDN的缓存。修改AASA文件以后,从https://app-site-association.cdn-apple.com/a/v1/ 访问可能不会马上更新。这个缓存具体时间不确定,可能是几小时或几天不等

  2. 也就是说即使我们修改了自己服务器上的apple-app-site-association文件,搭配app测试的时候,可能也不会马上达到我们想要的效果。 比如一开始我们在AASA文件里面是这样配置的:

     "paths": ["*"]

      这代表当前域名下的所有url都会唤起我们的app


      但是如果修改一下:

        "paths": ["NOT *-wx-*","*"]

      这表示我们想当前域名下,含-wx-的url不会唤起app。但是当我们修改了AASA文件,并更新到服务器以后,同时确保服务器文件已更新。
      可能依然会发现,测试效果并非我们所预测的那样,包含-wx-的url依然会唤起app,此时查看

https://app-site-association.cdn-apple.com/a/v1/你的域名.com 

      会发现,依然是

     "paths": ["*"]
  1. 同文件内容的缓存一样,我感觉我们在放开国外ip访问以后,https://app-site-association.cdn-apple.com/a/v1/ 或 apple CDN 并没有马上访问更新。所以当时没有生效,但是第二天缓存更新就生效了

相关文章:

关于ios Universal Links apple-app-site-association文件 Not Found的问题

1. 背景说明 1.1 Universal Links 是什么 Support Universal Links 里面有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是 当您支持通用链接时&#xff0c;iOS 用户可以点击指向您网站的链接&#xff0c;并无缝重定向到您安装的应用程序 大白话就是说&am…...

Objectarx MFC 添加ListControl并控制显隐

最主要的是实现一个Button点击将下方的List显示出来&#xff0c;制作成抽屉式菜单工具。 这篇文章是想实现点击工具栏并控制List的显隐。 参照&#xff1a; MFC中实现一个控件的隐藏和显示 【MFC】判断控件是否为隐藏状态 MFC中查找构件使用ID进行控制&#xff0c;这个和WPF&a…...

2023年高教社杯数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …...

SpringMVC 第二天

第 1 章 ModelAttribute 和 SessionAttribute[ 应 用 ] 1.1ModelAttribute 1.1.1 使用说明 作用&#xff1a; 该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。 出现在方法上&#xff0c;表示当前方法会在控制器的方法执行之前&#xff0c;先执行…...

抖音seo短视频矩阵系统源码开发源代码分享--开源-可二开

适用于抖音短视频seo矩阵系统&#xff0c;抖音矩阵系统源码&#xff0c;短视频seo矩阵系统源码&#xff0c;短视频矩阵源码开发&#xff0c;支持二次开发&#xff0c;开源定制&#xff0c;招商加盟SaaS研发等。 功能开发设计 1. AI视频批量剪辑&#xff08;文字转语音&#x…...

No message found under code ‘-1‘ for locale ‘zh_CN‘.

导出中的报错&#xff1a;No message found under code -1 for locale zh_CN. 报错原因&#xff1a;页面中展示的数据和后端excel中的数据不一致导致 具体原因&#xff1a;...

QtWidgets和QtQuick融合(QML与C++融合)

先放一个界面效果吧&#xff01; 说明&#xff1a;该演示程序为一个App管理程序&#xff0c;可以将多个App进行吸入管理。 &#xff08;动画中的RedRect为一个带有QSplashScreen的独立应用程序&#xff09; 左侧边栏用的是QQuickView进行.qml文件的加载&#xff08;即QtQuick…...

基于Vue的3D饼图

先看效果&#xff1a; 再看代码&#xff1a; <template><div class"container"><div style"height: 100%;width: 100%;" id"bingtu3D"></div></div></template> <script> import "echarts-liqu…...

Gateway简述

前言 ​ 在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端调用多个微服务接口的地址。另外微服务架构的请求中&#xff0c;90%的都携带认证信息/用户登录信息&#xff0c;都需要做相关的限制管理&#xff0c;API网关由此应允而生。 这样的架构会存…...

Midjourney API 的对接和使用

“ 阅读本文大概需要 4 分钟。 ” 在人工智能绘图领域&#xff0c;想必大家听说过 Midjourney 的大名吧。 Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作&#xff0c;只要简单输入绘图指令&#xff0c;这个神奇的工具就能在瞬间为我们呈现出对应的图像。无…...

01 消息引擎系统

本文是Kafka 核心技术与实战学习笔记 kafka的作用 kafka最经常被提到的作用是是削峰填谷&#xff0c;即解决上下游TPS的错配以及瞬时峰值流量&#xff0c;如果没有消息引擎系统的保护&#xff0c;下游系统的崩溃可能会导致全链路的崩溃。还有一个好处是发送方和接收方的松耦合…...

npm 卸载 vuecli后还是存在

运行了npm uninstall vue-cli -g&#xff0c;之后是up to date in&#xff0c;然后vue -V&#xff0c;版本号一直都在&#xff0c;说明没有卸载掉 1、执行全局卸载命令 npm uninstall vue-cli -g 2、删除vue原始文件 查看文件位置&#xff0c;找到文件删掉 where vue 3、再…...

Unity 之利用 localEulerAngle与EulerAngle 控制物体旋转

文章目录 概念讲解localEulerAngle与EulerAngle的区别 概念讲解 欧拉角&#xff08;Euler Angles&#xff09;是一种常用于描述物体在三维空间中旋转的方法。它使用三个角度来表示旋转&#xff0c;分别绕物体的三个坐标轴&#xff08;通常是X、Y和Z轴&#xff09;进行旋转。这…...

从零学算法 (剑指 Offer 13)

地上有一个m行n列的方格&#xff0c;从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动&#xff0c;它每次可以向左、右、上、下移动一格&#xff08;不能移动到方格外&#xff09;&#xff0c;也不能进入行坐标和列坐标的数位之和大于k的格子。例如&am…...

854之数据结构

一.线性表 1.顺序表 #include <iostream> #include<stdlib.h> using namespace std; #define max 100 typedef struct {int element[max];int last; } List; typedef int position ; void Insert(int x, position p, List &L) {position q;if (L.last > ma…...

Redis从基础到进阶篇(二)----内存模型与内存优化

目录 一、缓存通识 1.1 ⽆处不在的缓存 1.2 多级缓存 &#xff08;重点&#xff09; 二、Redis简介 2.1 什么是Redis 2.2 Redis的应用场景 三、Redis数据存储的细节 3.1 Redis数据类型 3.2 内存结构 3.3 内存分配器 3.4 redisObject 3.4.1 type 3.4.2 encoding 3…...

DBO优化SVM的电力负荷预测,附MATLAB代码

今天为大家带来一期基于DBO-SVM的电力负荷预测。 原理详解 文章对支持向量机(SVM)的两个参数进行优化&#xff0c;分别是&#xff1a;惩罚系数c和 gamma。 其中&#xff0c;惩罚系数c表示对误差的宽容度。c越高&#xff0c;说明越不能容忍出现误差,容易过拟合。c越小&#xff0…...

第一百二十五回 dart中List和Map的常见用法

文章目录 概念介绍使用方法初始化相互转换元素操作 经验分享 我们在上一章回中介绍了Flexible组件相关的内容&#xff0c;本章回中将介绍 dart中的List和Map.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在这里介绍的List也叫列表&#xff0c;它表示一组相…...

小白到运维工程师自学之路 第七十九集 (基于Jenkins自动打包并部署Tomcat环境)2

紧接上文 4、新建Maven项目 clean package -Dmaven.test.skiptrue 用于构建项目并跳过执行测试 拉到最后选择构建后操作 SSH server webExec command scp 192.168.77.18:/root/.jenkins/workspace/probe/psi-probe-web/target/probe.war /usr/local/tomcat/webapps/ /usr/loca…...

林【2021】

三、应用 1.字符串abaaabaabaa&#xff0c;用KMP改进算法求出next和nextval的值 2.三元组矩阵 4.二叉树变森林 四、代码&#xff08;单链表递增排序&#xff0c;二叉树查找x&#xff0c;快速排序&#xff09;...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...