ios - 如何检测并添加丢失的电话区号?

标签 ios libphonenumber

如果我的 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/

相关文章:

ios - BuddyBuild 无法生成核心数据文件

iOS 如何在容器 View Controller 中设置透明

android:如何将数字格式化为带括号的电话

javascript - "goog.proto2.Message.set$Metadata"未定义错误

angular - 如何在 Typescript 中使用 Google libphonenumber?

c#-4.0 - 如何使用 libphonenumber 以国际格式格式化电话号码。

ios - Swift tableView.dequeueReusableCell 从不返回 Nil

iphone - 为 iPhone 应用程序制作一个计时器来稍微延迟几个音频 channel ?

ios - 将图像从 xcode Playground 快速保存到资源文件夹

java - 标准化给定国家/地区代码的电话号码