如果我的iPhone通讯录中有一个联系人,其格式为XXX-YYYY,然后点击以拨号,则iPhone会拨打号码206-XXX-YYYY(206是美国西雅图的区号,这是电话的所在地拨号和正在拨打的电话都是)。

我有一个应用程序,它通过提取用户的联系人应用程序来提取电话号码,因此我希望能够检测出缺少这样的区号,并将其添加到与iOS本身相同的位置。

有人知道我该怎么做吗?

我知道iPhone的电话号码,例如AAA-BBB-CCCC,因此我可以将AAA-BBB-CCCC与通讯录中的电话号码进行比较,如果我看到类似XXX-YYYY的数字,则可以推断出一个)缺少区号,并且b)缺少的区号必须与iPhone的区号相同,因此在XXX-YYYY前面加AAA。

我知道这将是一个过于简单的解决方案,并且可能仅在北美有效。

那么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/

10-10 00:37