需要帮助创建动态电话号码检测器?

时间:2016-10-21 01:30:41

标签: database contacts phone-number

情况如下:我的应用的用户将仅使用他们的电话号码创建他们的帐户(例如WhatsApp)。所以没有用户名,密码或类似的东西。我将在验证后将这些电话号码存储在我的数据库中,因此我知道所有存储的号码都将采用一种特定的格式。

然而,棘手的部分是,我希望我的应用能够查看用户的联系人,看看他们的联系人是否在我的应用服务器上有帐户。理论上,我只是希望应用程序检查电话号码,看看它是否存在于我的数据库中,因为我非常确定电话号码是我的应用程序可以访问的联系人的唯一(唯一)属性(请更正)我,如果我错了。)

我害怕的是,每个智能手机用户都以自己的方式存储联系人的电话号码。我的意思是,例如,一个人可能会以“干净的方式”存储联系人的电话号码,其中包含国家代码和区号以及电话号码中应包含的所有其他内容,例如:+1 xxx xxx xxxx(我来自荷兰,我只是在猜测,所以如果这不是美国电话号码的话,我向所有美国读者致歉)。其他人可能会以“快捷方式”存储其联系人的电话号码,没有任何国家代码或区号,如下所示:xxx xxx xxxx(无国家代码)或甚至xxx xxxx(无区号)。

这已经是一个国家(例如美国)的问题,更不用说有人在他的手机中与其他国家(有自己的区号规则)有联系的情况。一个人的联系人列表中的联系人仍然可能正在使用我的应用程序及其电话号码,但如果该人以“快速方式”存储其联系人的电话号码,我的应用程序将无法在数据库中找到它。现在,我要么寻找一个联系人的替代唯一值,我也可以将其存储在我的数据库中,而不是将其用作标识符(我非常怀疑存在),或者最好是一种使应用程序搜索的方法更动态,即使存储在联系人列表中的号码与我的数据库中存储的电话号码不同,它也能识别匹配的电话号码。

而不是一些技术建议,我宁愿听到有人知道世界各地的电话号码。例如:只搜索联系人电话号码的最后8位数是否明智,或者就世界其他地方可能存在的重复电话号码而言是否存在风险?只是想知道最安全的方法是什么......

顺便说一句:我正在构建的应用程序是用Swift 3编写的,我将通过Apple的Contacts Framework访问用户的联系人。

1 个答案:

答案 0 :(得分:0)

独特的代码很棘手 - 特别是在基于真实世界的数据时(通常非常嘈杂,并且您可以想到更多例外情况)。

我同意"最后8位"风险很大。 相反,我要做的是弄清楚(或猜测)用户来自哪个国家,并始终将其与电话号码一起存储(即使用户没有选择显示它)。

所以,如果他们有一个国家/地区的地址,那么请使用该国家/地区的国家/地区代码。如果他们没有,那么就有一个"默认"国家(美国经常使用,但我真的很讨厌(我来自澳大利亚)。

请注意,您仍然会收到错误和异常,但这意味着如果9123 4567与(+61)9123 4567相同,您可以做出有根据的猜测。

还要注意以下事项:

  1. 有时不止一个人分享电话号码
  2. 有时一个人有多个电话号码