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,部分场景下会引入冗余的空白字符、换行符或者其他不可见字符。
临时解决办法
你的代码本身没问题,不需要改动核心扫描逻辑,只需要在获取到解析结果后做一下清理处理:
- 去除首尾空白/换行
直接用trimmingCharacters去掉结果首尾的空白和换行符,大部分场景下就能解决问题:
guard let stringValue = readableObject.stringValue?.trimmingCharacters(in: .whitespacesAndNewlines) else { return } print(stringValue)
- 过滤所有不可见字符
如果遇到的是其他不可见字符,可以进一步过滤:
guard let stringValue = readableObject.stringValue else { return } let cleanedValue = stringValue.filter { character in !character.isWhitespace && !character.isNewline && character.isPrintable } print(cleanedValue)
- 基于业务格式校验
如果你的二维码有固定格式(比如特定前缀、长度),可以针对性截取有效内容,比如:
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
相关产品推荐
相关产品推荐

