如果我的 iPhone 地址簿中有一个格式为 XXX-YYYY 的联系人,然后点击它进行拨号,那么 iPhone 会调用号码 206-XXX-YYYY(206 是美国西雅图的区号,这是正在拨号的电话和被调用的电话都是)。
我有一个应用程序,它通过用户的联系人应用程序提取电话号码,我希望能够检测到区号何时丢失,并像 iOS 本身一样添加它。
有人知道我该怎么做吗?
我知道 iPhone 的电话号码,例如 AAA-BBB-CCCC,因此我可以将 AAA-BBB-CCCC 与地址簿中的电话号码进行比较,如果我看到类似 XXX-YYYY 的号码,那么我可以推断出 a) 区号丢失,b) 丢失的区号必须与 iPhone 的区号相同,因此将 AAA 添加到 XXX-YYYY 前面。
我知道这个解决方案过于简单,并且可能只适用于北美。
那么 iPhone 是如何做到这一点的?是否有适用于所有国家/地区的可扩展解决方案?
我知道 libPhoneNumber (以及它的 iOS 端口 https://github.com/iziz/libPhoneNumber-iOS ),但是通过它的 API,我看不到任何可以首先检测电话号码是否缺少区号的内容。也许它就在那里,但 iOS libPhoneNumber 端口没有被广泛记录。
有人遇到并解决了类似的问题吗?
最佳答案
不幸的是,在许多情况下无法确定缺少区号的号码。您可以做一些事情来提高胜算。
首先,您可以假设 7 位数字与用户的电话号码位于同一区号,只需附加区号即可。
其次,由于美国许多地点都有多个区号(例如,丹佛的区号为 303 和 720),因此您可以检查区号和前缀的组合是否有效。多个服务和数据库包含此信息,例如 http://www.ccmi.com/npa-nxx-rate-center-lookup 。 (请注意,区号称为 NPA,前缀称为 NXX。)NPA-NXX 组合可以告诉您位置,通常还可以告诉您所属的运营商和电信交换机。
第三,如果您将地址信息与电话号码一起阅读,那么您就有明显的优势。由于 NPA-NXX 是特定于位置的,因此您可以使用该位置数据来更好地验证正确的区号。
这一切都不完美,并且会做出错误的假设。一大原因是号码可携带性。例如,当我搬家或更换运营商时,我可以随身携带我的丹佛电话号码。
关于ios - 如何检测并添加丢失的电话区号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968008/