iOS应用关联域Site/Fmwk Approval被拒问题求助
iOS关联域(applinks)失效排查方案
一、先检查apple-app-site-association文件本身
- JSON格式校验:添加新App ID后极易出现语法错误,比如多打/漏打逗号、引号不闭合。用JSON校验工具(本地或在线均可)检查文件是否合法。
- App ID格式正确性:每个App ID必须严格遵循
团队ID.应用Bundle ID的格式,比如XYZ1234567.com.yourcompany.yourapp,团队ID要和苹果开发者后台里的一致,不能写错。 - 数组结构规范:
applinks下的apps数组必须保留空数组[],details数组里要正确包含新旧App ID的配置,示例格式如下:
{ "applinks": { "apps": [], "details": [ { "appID": "旧团队ID.旧BundleID", "paths": ["/*"] }, { "appID": "新团队ID.新BundleID", "paths": ["/*"] } ] } }
- paths规则检查:如果新增App ID的paths有特殊规则(比如排除某路径),要确保格式正确,比如
NOT /private/*这种写法不能出错,通配符*的使用也要符合苹果规范。
二、排查Nginx服务器配置
- 目录访问权限:确保Nginx允许访问
.well-known目录,配置示例:
location /.well-known/ { allow all; try_files $uri $uri/ =404; }
- Content-Type响应头:苹果要求该文件的Content-Type必须是
application/json,不能是text/plain。用以下命令测试:
curl -I https://My-Website.com/.well-known/apple-app-site-association
查看返回结果里的Content-Type字段是否为application/json,如果不是,在Nginx里添加对应配置:
location = /.well-known/apple-app-site-association { add_header Content-Type application/json; }
- HTTPS有效性:苹果强制要求关联域文件通过HTTPS访问,检查你的SSL证书是否有效、未过期,且配置正确。
- 缓存策略:避免Nginx设置过长的缓存时间,导致苹果服务器获取的是旧配置。可以添加缓存控制头:
location = /.well-known/apple-app-site-association { add_header Cache-Control "max-age=3600"; }
- 文件可访问性:用curl直接下载文件,检查返回内容是否和本地编辑的完全一致,排除Nginx返回404或错误内容的情况。
三、深挖Sysdiagnose日志
日志里的Site/Fmwk Approval被拒通常会附带更具体的原因,比如JSON解析失败、App ID不匹配、证书不信任等,仔细查看日志里的详细错误提示,能快速定位问题。
四、验证苹果服务器的获取情况
可以用curl模拟苹果服务器的请求,或者通过苹果开发者后台的关联域验证功能,确认苹果能正确获取并解析你的配置文件。
内容的提问来源于stack exchange,提问作者Ahmadreza
相关产品推荐
相关产品推荐

