2011-06-22 99 views
1

我正在研究iPhone的应用程序'Viber'(http://www.viber.com/)。如何确定一个电话号码(国家代码)是否等于另一个(不包括国家代码)

我需要在我的数据库中使用用户电话号码作为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

是否有解决这个问题的简单方法是什么?

+0

你看过[regex](http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html) – Intentss

回答

2

没有简单的方法将本地格式转换为E.164格式。问题在于,每个国家的本地移动格式各不相同,因此您无法为所有国家制定一套规则。你必须找出国家本地移动运营商支持的格式。

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

如果你要处理多个国家,那么你将不得不与澳大利亚等国,谁支持当地的数字格式,使它们转换为E.164格式几乎不可能没有进一步的信息问题....

查看此Question这与您的基本问题相同。

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

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

在我工作的PBX软件中,我们使用基于规则的引擎,客户可以在该环境中配置该引擎,并尝试为我们销售的国家预先填充。