我有使用下列方式联系人数据的应用程序:与国际电话号码处理iPhone上
- 从客户端发送短信
- 从我们的服务器发送短信
- 要将用户的电话号码上传到其他人可以匹配的数据库
这在美国很好,但国际化有一系列问题。这些是我的假设使其工作:
#1 - 从客户端发送短信很简单。逐字地使用地址簿中的号码(没有标准化),让操作系统找出它。如果他们可以通过给定号码拨打电话,他们可以发送短信(对吧?)
#2 /#3 - 从服务器发送短信更加复杂。大多数SMS API需要国际符号(“+”前缀和国家代码),而用户将在他们的联系人列表中具有各种具有各种前缀(区号,国家代码等)的本地和全球电话号码。因此这里需要正常化。在数据库中匹配用户的电话号码也需要标准化。
要正常化电话号码,我必须首先确定用户是否打算通过查找“+”“011”和“00”前缀来指定全局号码。如果是这样,我删除前缀,将其替换为“+”并使用该号码。
如果我认为这个号码是本地号码,我可以尝试自己的国家代码(启发式,不可靠)。这需要了解用户的默认国家代码。在iPhone上,我可以获取用户的首选区域(可选)和用户的MCC和MNC(取决于位置?)。我倾向于用户选择的国家代码,因为他们的大部分本地电话号码都是来自该国家的。
我相信这是我能做的最好的事情,无需解析整个数字并找出区号和其他组件。我假设大多数国家允许“0”作为他们自己的国家代码的前缀。
有意义吗?有没有更容易/更理智的方式来做到这一点?