1

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

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

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

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

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

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

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

4

1 回答 1

2

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

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

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

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

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

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

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

于 2011-06-22T20:58:43.210 回答