#android #ios #match
#Android #iOS #сопоставление
Вопрос:
У меня есть вопрос о том, как сопоставить телефонные номера из списка контактов пользователя с номерами телефонов, которые у меня есть в удаленной базе данных. Поток выглядит следующим образом:
- Пользователь регистрируется в моем приложении со своим номером телефона (как и любой другой пользователь)
- Приложение запрашивает разрешение контакта
- Приложение отправляет контакты (номера телефонов) на сервер для сопоставления с другими зарегистрированными номерами
Проблема, с которой я сталкиваюсь, заключается в том, что пользователи регистрируют свой номер телефона в формате: 1XXXYYY. Например, человек А регистрируется с номером 1222333. Может случиться так, что у человека B в списке контактов есть человек A как 0222333, как мне сопоставить этот номер? Я не могу знать, является ли префикс » 1″ или каким-либо другим номером.
Ответ №1:
Я хотел бы порекомендовать библиотеку libphonenumber: https://github.com/google/libphonenumber Он может анализировать числа, а затем выводить их в стандартизированный формат. Официальная библиотека поддерживает Java, C и JavaScript, но есть также порты на другие языки (см. Внизу страницы Github)
Вот краткий пример того, как отформатировать национальный номер как международный в Java
public static String getInternationalNumber(String localNumber, String regionCode) {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber phoneNumber;
try {
phoneNumber = phoneUtil.parse(localNumber, regionCode);
}
catch (NumberParseException e) {
return null;
}
return (phoneUtil.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL));
}
Вероятно, можно предположить, что номера в списке контактов пользователя имеют тот же код страны, что и у пользователя.
Чтобы узнать, какой код страны имеет номер телефона вашего пользователя, вы можете сделать что-то вроде этого (при условии, что это международный номер)
public static String getRegionCode(String phone) {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber phoneNumber;
try {
phoneNumber = phoneUtil.parse(phone, "");
}
catch (NumberParseException e) {
return null;
}
return phoneUtil.getRegionCodeForNumber(phoneNumber);
}
Комментарии:
1. «Вероятно, можно предположить, что номера в списке контактов пользователя имеют тот же код страны, что и у пользователя». Я думал об этом, вероятно, это так. Я могу на это положиться. Кстати, хорошая библиотека: D