You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS NFC后台读取未被应用捕获问题排查咨询

调试iOS NFC后台读取时通用链接跳转到Safari的问题

看起来你遇到的问题和那个Stack Exchange帖子里的情况一致——NFC后台扫描后只唤起Safari而不是你的APP,核心原因大概率是通用链接(Universal Link)的匹配逻辑没生效,或者NFC标签的URL配置有问题。下面是一套一步步的调试方案,帮你定位问题:

一、先确认通用链接本身是否正常工作

NFC后台读取完全依赖通用链接的匹配,所以先把这个基础问题排除:

  • 测试通用链接的基础跳转:打开Safari,输入你NFC标签里的完整URL(比如https://www.example.com/nfc/tag),长按这个链接,如果看不到「在[你的APP名称]中打开」的选项,说明通用链接本身的配置就有问题,和NFC无关。
  • 校验apple-app-site-association文件
    1. 确保文件放在https://www.example.com/.well-known/目录下,文件名就是apple-app-site-association不能加.json后缀
    2. 文件内容要准确对应你的APP信息,比如:
      {
        "applinks": {
          "apps": [],
          "details": [
            {
              "appID": "你的TeamID.你的BundleID",
              "paths": ["*", "/nfc/*"] // 根据你NFC标签的URL路径调整
            }
          ]
        }
      }
      
    3. 用苹果开发者网站的App Search验证工具检查这个文件是否合法,确保没有格式错误或信息不匹配。
  • 核对APP的关联域名配置
    打开Xcode的Signing & Capabilities面板,确认Associated Domains里确实添加了applinks:www.example.com,TeamID和BundleID必须和apple-app-site-association里的完全一致,不能有拼写错误。

二、针对NFC后台读取的特定排查

通用链接没问题的话,再聚焦NFC的配置:

  • 检查NFC标签的NDEF数据
    确保标签里的NDEF记录是URL类型,并且URL完全匹配你通用链接配置的路径(比如不能多一个斜杠、大小写错误,或者额外的未配置参数)。之前那个用户就是调整了URL的格式才解决问题,所以仔细核对标签URL和你配置的路径是否完全契合。
  • 确认后台NFC的权限配置
    1. Info.plist里必须添加NFCReaderUsageDescription,填写用户能理解的权限说明文案;
    2. Signing & Capabilities里要开启Near Field Communication Tag Reading权限;
    3. 后台读取需要开启Background Modes里的NFC Tag Reading,对应Info.plistUIBackgroundModes数组要包含nfc-tag-reading
  • 先测试前台NFC读取
    在APP前台状态下扫描NFC标签,确认能正确识别URL并跳转到APP内的对应页面。如果前台都无法正常跳转,那后台肯定也不行,先解决前台的问题再看后台。

三、检查“URL捕获”功能是否正常的实用方法

  • 用Xcode控制台看日志
    把设备连接到Xcode,打开Window > Devices and Simulators,选中你的设备后点击Open Console,过滤关键词swcd(负责通用链接的系统进程)、nfc或者你的APP Bundle ID。扫描标签时,日志会告诉你系统是否找到了匹配的APP:
    • 如果看到No matching app found for URL,说明通用链接没匹配上;
    • 如果看到Redirecting to app但APP没打开,可能是APP的后台状态有问题。
  • swcutil命令行工具检查缓存
    在Mac终端运行swcutil show,可以查看设备上缓存的通用链接配置,找到你的APP对应的条目,确认applinks:www.example.com已经被正确缓存。如果没找到,运行swcutil reset重置缓存,然后重新打开APP触发配置更新。
  • 检查通知的跳转选项
    扫描NFC后出现通知时,不要直接点击,长按通知查看是否有「在[你的APP名称]中打开」的选项:
    • 如果有,说明系统已经识别到通用链接,但默认跳转被设为了Safari;
    • 如果没有,说明通用链接完全没匹配上。

四、容易踩的坑

  • URL大小写敏感:通用链接的路径是大小写敏感的,标签里的URL和配置里的路径必须完全一致;
  • HTTPS证书问题apple-app-site-association文件必须通过合法的HTTPS访问,自签名证书在非测试设备上会失效;
  • 签名配置问题:测试设备上的APP必须用包含关联域名权限的Provisioning Profile签名,否则配置不会生效。

内容的提问来源于stack exchange,提问作者sk2212

火山引擎 最新活动