iOS中使用PhoneNumberKit 3.3无法验证911这类紧急号码
解决PhoneNumberKit解析美国紧急号码911报错的问题
问题原因
PhoneNumberKit基于libphonenumber库实现,当ignoreType参数设为false时,会严格校验号码是否属于目标地区的常规有效号码类型(如固定电话、移动电话)。而911这类紧急号码属于特殊服务号码,不在常规类型范围内,因此触发"号码无效"的错误。
解决方案
将parse方法的ignoreType参数改为true,跳过号码类型校验,仅验证格式合法性即可成功解析紧急号码:
修改后的代码示例
do { let emergencyNumber = "+1 911" let phoneNumberCustomDefaultRegion = try phoneNumberKit.parse(emergencyNumber, withRegion: "US", ignoreType: true) // 此处添加解析成功后的业务逻辑 } catch { print("Generic parser error \(error.localizedDescription)") }
简化写法(无需指定地区)
由于号码已带有国家码+1,PhoneNumberKit可自动识别所属地区,也可以使用以下简化写法:
do { let emergencyNumber = "+1 911" let phoneNumber = try phoneNumberKit.parse(emergencyNumber, ignoreType: true) } catch { print("Generic parser error \(error.localizedDescription)") }
内容的提问来源于stack exchange,提问作者Nat's
相关产品推荐
相关产品推荐

