使用电话号码跟踪在线用户

时间:2013-06-28 06:43:30

标签: android

我正在开发想要跟踪在线用户的Android应用程序。 当用户安装应用程序时,他会提供他的号码和国家/地区代码,我们会使用该号码注册用户。 现在每当他启动应用程序时,他都会将所有移动联系人列表发送到服务器,以查找谁在线。

这种方法的问题是手机号码可以采用不同的格式,如

  • +91 9665123456
  • 91 9665123456
  • 0 9665123456
  • 9665123456

让我们假设在注册用户A时给出号码+91 9665123456,我们注册用户并在应用程序运行时将其设为在线。
但是在用户B手机中,他的号码存储为09665123456,我需要查询用户A是否在线,但由于这两个号码的使用方法不同有什么用呢?
我不确定whatsapp如何解决这个问题? 我能想到的另一种方法是使用libphonenumber来查找数字匹配,但它也给出了概率 是否有其他方法建议处理上述情况?

3 个答案:

答案 0 :(得分:2)

我建议采用以下方法:

1,您的服务器应该有一个国家/地区代码列表以及该国家/地区的手机号码所允许的相应位数

2,当注册用户A首次上线并将其联系人首次发送到您的服务器时,您可以从该号码的左端开始检查联系人。如果您看到国际前缀00或+,则从左侧第一位开始,识别国家/地区代码,如果右侧的剩余位数与此国家/地区的已定义位数匹配,请扫描使用该位置注册的用户列表国家/地区代码查看匹配项。如果不是,则取前2位数字查看可能的国家代码并进行类似检查。 现在,如果您在联系人中看不到任何国际前缀,则表示该联系人与A位于同一国家/地区,因此您需要在获取该联系人所需的最后一定数字后扫描从同一国家/地区注册的用户列表。国家代码。

3,如果为每个注册用户生成一个唯一ID,可以将其用作用户数据库的主键,那就更好了。这将消除重复用户的详细扫描需求。例如:让A有一个id 123,B有一个id 456.当A登录时,设置A的在线标志,然后搜索B,如果B已经注册,则将B的id 456加到A的朋友列表中由A存储的相应数字。因此,下次当A进入时,您将看到联系人B分配了唯一ID,因此您需要检查是否为此ID设置了在线标志。即使用户更改了他/她的号码

,这也很有用

答案 1 :(得分:1)

我在开发应用时遇到了类似的问题。你可以做的是检查特殊字符的输入,并考虑大小。删除空格,并只存储最后10位数字。如果条目类型是字符串,则可以通过修剪和子字符串操作来实现。然后比较两个字符串应该产生所需的方式。

答案 2 :(得分:0)

根据我的建议

==>首先,使用replace(“”,“”)函数

删除数字中的所有空格

==>然后使用查询匹配最后10个字符,所以它给你你想要找到的手机号码是在线或离线用户联系书。