You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iPhone 15扫描QRCode读取到额外字符的技术求助

iPhone 15(iOS 17.1.1)扫描QRCode出现额外字符的问题

不少开发者都遇到过和你一样的情况:基于Apple官方示例编写的二维码扫描Demo,在iPhone 15系列机型(iOS 17.1.1)上扫描时,解析结果会多一个原本不存在的额外字符,但其他iPhone机型同系统下完全正常。

可能原因

这应该是iOS 17针对iPhone 15系列相机硬件的优化,导致AVCaptureMetadataOutput的QRCode解析逻辑出现了小bug,部分场景下会引入冗余的空白字符、换行符或者其他不可见字符。

临时解决办法

你的代码本身没问题,不需要改动核心扫描逻辑,只需要在获取到解析结果后做一下清理处理:

  1. 去除首尾空白/换行
    直接用trimmingCharacters去掉结果首尾的空白和换行符,大部分场景下就能解决问题:
guard let stringValue = readableObject.stringValue?.trimmingCharacters(in: .whitespacesAndNewlines) else { return }
print(stringValue)
  1. 过滤所有不可见字符
    如果遇到的是其他不可见字符,可以进一步过滤:
guard let stringValue = readableObject.stringValue else { return }
let cleanedValue = stringValue.filter { character in
    !character.isWhitespace && !character.isNewline && character.isPrintable
}
print(cleanedValue)
  1. 基于业务格式校验
    如果你的二维码有固定格式(比如特定前缀、长度),可以针对性截取有效内容,比如:
guard let stringValue = readableObject.stringValue else { return }
// 假设二维码内容长度固定为16位,直接截取前16位
if stringValue.count >= 16 {
    let validValue = String(stringValue.prefix(16))
    print(validValue)
}

长期解决方案

这个问题属于系统层面的bug,苹果大概率会在后续iOS版本更新中修复,建议关注iOS 17.2及以上版本的更新,升级后再测试是否解决。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 19:45:13