【问题标题】:How to determine if a phone number (with country calling code) is equal to another (whithout country calling code)如何确定一个电话号码(带有国家/地区呼叫代码)是否等于另一个(没有国家/地区呼叫代码)
【发布时间】:2011-09-20 16:21:53
【问题描述】:

我正在为 iPhone (http://www.viber.com/) 开发像“Viber”这样的应用程序。

我需要在我的数据库中使用用户电话号码作为 ID。

当用户启动应用程序时,我需要确定哪些联系人使用相同的应用程序。 我可以通过 ios API 获取联系人电话号码。

但在考虑国家/地区呼叫代码 (http://en.wikipedia.org/wiki/List_of_country_calling_codes) 时,这种情况是有问题的:

当“注册”时,用户 A 输入他的电话号码,没有国家电话代码。 USER A 在 USER B 的联系人列表中,但没有国家电话代码。

例如,在法国: +33 x xx xx xx xx 指的是与 0x xx xx xx xx 相同的电话

有没有简单的方法来解决这个问题?

【问题讨论】:

标签: iphone viber mobile-country-code


【解决方案1】:

没有简单的方法可以从本地格式转换为 E.164 格式。问题是每个国家/地区的本地移动格式各不相同,因此您不能为所有国家/地区制定一套规则。您必须找出当地移动运营商支持的国家/地区的格式。

如果您必须支持多个国家/地区,那么您可能会基于 iphone 返回的MCC/MNC。我还没有找到哪些国家/地区支持哪些本地格式的列表。它也无法解决号码为本地格式的漫游电话的问题。

如果您必须与多个国家/地区打交道,那么您将遇到像澳大利亚这样的国家/地区的问题,这些国家支持本地号码格式,如果没有进一步的信息,几乎不可能将它们转换为 E.164 格式....

请参阅此Question,这与您的问题基本相同。

我建议您的所有用户都使用 E.164 格式来存储所有电话号码。如果您必须支持转换,则仅支持您必须处理的国家/地区格式。确保调查该国家/地区支持的所有格式。

您可以尝试使用上述问题中的通用格式,但它不适用于所有数字格式。

在我使用的 PBX 软件中,我们使用基于规则的引擎,客户可以针对那里的环境进行配置,并且我们尝试为我们销售的国家/地区预填充。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多