我有一个通过以下方式使用联系人数据的应用程序:
这在美国可以正常使用,但国际化有一系列问题。这些是我使其工作的假设:
#1-从客户端发送SMS很简单。按原样使用地址簿中的数字(不进行标准化),然后让操作系统将其找出来。如果他们可以通过给定的号码拨打电话,他们可能会发送短信(是吗?)
#2 /#3-从服务器发送SMS更复杂。大多数SMS API需要国际符号(“+”前缀和国家/地区代码),而用户在其联系人列表中将具有各种带有各种前缀(地区代码,国家/地区代码等)的各种本地和全局电话号码。因此,这里需要规范化。在数据库中匹配用户的电话号码也需要规范化。
为了规范电话号码,我必须首先确定用户是否打算通过查找“+”,“011”和“00”前缀来指定全局号码。如果是这样,我删除前缀,将其替换为“+”并使用该数字。
如果我认为该号码是本地号码,则可以尝试自己添加国家代码(启发式方法,不可靠)。这需要知道用户的默认国家/地区代码。在iPhone上,我可以获取用户的首选区域(可以选择)以及用户的MCC和MNC(取决于位置?)。我倾向于用户选择的国家/地区代码,因为大多数本地电话号码很有可能是该国家/地区的电话。
我相信这是我最好的方法,无需解析整数,也无需弄清区号和其他组成部分。我假设大多数国家/地区都允许将“0”作为其国家/地区代码的前缀。
合理?有没有更简单/更明智的方式来做到这一点?
最佳答案
#1这是一个合理的假设,除非用户出国。
#2 /#3要进行更可靠的标准化,您需要获取用户的大致位置。这是伪代码:
由于这一步骤的复杂性,可能更容易提示用户输入一些信息,例如其当前的区号和国家/地区代码或位置。
关于ios - 在iPhone上处理国际电话号码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3103393/