如何将本地移动 phone 号码格式化为国际号码?

How can I format a local mobile phone number to a international one?

我正在使用 contact_service flutter 包从设备中检索联系人。但我注意到,当我查看 _contacts[index].phones 时,它要么是移动设备,要么是其他设备。我只接受有手机 phone 号码的联系人。但是当我查看 phone 数字时,我发现它们都有不同的格式。

+31XXXXXXXX
+31 6 XXXXXXXX
06-XXXXXXXX
06 XXXXXXXX
6 XXXXXXXX
(045) XXXXXXXX
045 XXXXXXXX

旁注:我正在使用 google 帐户开发 android 模拟器

我希望它们都带有国家代码,这样我就可以将它们与我的 firebase 身份验证 phone 号码进行比较。所以我的问题是我该怎么办?

我是否在客户端格式化联系人列表phone号码?或者我只是发送它并使用云函数以某种方式弄清楚它?我该怎么做?

我建议如下:

  1. 了解您的客户来自哪个国家/地区。
  2. 将号码与姓名一起保存
  3. 尝试通过一个过程猜测国家代码并保存所有版本
  4. 使用所有版本进行搜索

正在尝试猜出正确的数字:

  • 如果以 + => 开头就很好
  • 否则如果它以 00 开头 => 将 00 替换为 +
  • 否则使用用户的国家代码,在这种情况下检查联系人姓名是否与其他搜索到的用户相对应
  • 或者问用户:你认识这个人吗?

You can find countries key code here

希望对您有所帮助, 祝你好运。

Do I format the contact list phonenumber on the client side?

Or do I just send it and use a cloud function to somehow figure it out?

客户端 - 好主意。特别是考虑到仅本地 phone 号码是不够的。您还需要猜测国家/地区。这在您拥有更多上下文的客户端更容易。它对性能也更好。

And how do I do that?

可能这就是您要找的:

  1. https://github.com/google/libphonenumber
  2. https://pub.dev/packages/phone_number#-example-tab-