从本地号码中检索国际电话号码

时间:2018-06-05 10:48:35

标签: firebase authentication mobile contacts phone-number

我正在使用NativeScript框架构建一个消息传递应用程序,其核心功能基于电话号码,但我遇到了一些麻烦。基本上,此应用的用户应该能够通过应用程序本身发送彼此的语音消息。

深入研究:

  • 我的用户使用国际格式编写的电话号码登录应用程序(E.164,很好的参考here)。我使用Firebase身份验证来验证该号码。用户成功登录后,其数据将存储在Firebase实时数据库中,并以国际格式的电话号码哈希值编制索引。
  • 登录后,用户会看到手机上的联系人列表。列表中的联系人可以安装或不安装应用程序,如果有,他们可以直接接收语音消息。

我想要实现的目标:我还希望向未在应用中注册的人发送消息。理想情况下,已登录的用户A可以向其任何联系人发送消息,也可以向未使用该应用程序的用户B发送消息。在这种情况下,我可以通过用户B的联系电话号码在我的数据库中创建一条记录,最终发送一条通知操作的短信,并邀请B在应用程序中注册以便收听该消息。当用户B将使用她的国际号码注册时,她将找到该消息。

问题:用户不会始终以国际格式存储联系人,但通常以本地格式存储(并以各种方式)。如果我使用手机中存储的号码在数据库中建立新用户,那么当她使用国际格式注册到应用程序时,我最终可能会遇到不同的用户。

我已经分析了以下解决方案:

  • 使用本地号码而非国际号码:无用,本地号码在各个国家/地区并不是唯一的。
  • 使用Firebase邀请:当用户A想要在没有应用的情况下向用户B发送消息时,我可以使用Firebase邀请向B发送短信,最终使用可帮助我登录的代码。但是这样,如果用户B独立注册,没有看到短信,我就会遇到同样的问题:她不会看到A的消息。而且,在iOS中我也应该要求用户A登录与谷歌(我想避免的另一个登录步骤)。
  • 分析联系人的电话号码,试图了解是否存在国际前缀,如果没有做出一些假设并完成它(例如,我可以使用存储联系人的电话的SIM卡的国家/地区)。但我担心这种方法不太可靠(我可能在英国,有一部IT电话,添加一个本地英国号码:我的应用程序将添加一个IT前缀,而数字应该确实是英国)。

你对我怎么解决这个问题有什么想法?

非常感谢提前!

0 个答案:

没有答案