Как разработчикам, нам часто нужно определять местоположение пользователя, чтобы предоставлять более качественные услуги. Одной из ключевых частей информации, которая может быть полезной, является телефонный код страны пользователя — префикс, используемый при наборе международных телефонных номеров. Один из эффективных и надежных способов угадать телефонный код страны пользователя в JavaScript основан на его часовом поясе. Вы можете ознакомиться с демо на этом сайте.

Почему так важно угадывать телефонные коды стран пользователей

Угадывание телефонных кодов страны пользователя может быть полезным по нескольким причинам:

  • Форматирование телефонных номеров. Автоматическое форматирование телефонных номеров в зависимости от местоположения пользователя может улучшить взаимодействие с пользователем за счет добавления соответствующего телефонного кода страны и форматирования самого номера в соответствии с местными соглашениями.
  • Выбор префиксов набора номера. Использование правильного префикса набора номера при международных звонках может иметь решающее значение. Угадывая телефонный код страны пользователя, вы можете автоматически выбрать соответствующий префикс и сделать процесс звонка более плавным для пользователя.
  • Геотаргетинг: вы можете показывать определенный контент или функции в зависимости от местоположения пользователя. Угадывание телефонного кода страны может помочь принять более точные решения по геотаргетингу.

Представляем новое решение: угадывание по часовому поясу

Я только что выпустил библиотеку на NPM под названием guess-calling-code, предлагающую оптимизированный метод для угадывания телефонных кодов страны пользователей в JavaScript на основе их часового пояса. Эта библиотека использует Intl.DateTimeFormat API для получения города часового пояса пользователя, который затем сопоставляется со списком сопоставлений телефонных кодов часовых поясов и стран.

Применение

Вот пример использования guess-calling-code:

import guessCallingCode from "guess-calling-code";
const callingCode = guessCallingCode();
if (callingCode) {
  console.log(`User's country calling code is ${callingCode}`);
} else {
  console.log("Unable to determine user's country calling code");
}

Видите ли, им легко пользоваться.

Как это работает

Во-первых, вот функция для получения города часового пояса пользователя с помощью Intl.DateTimeFormat API:

function getUserTimeZoneCity(): string | undefined {
  try {
    const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
    if (!userTimezone) return;
    const timezoneArr = userTimezone.split("/");
    const result = timezoneArr[timezoneArr.length - 1];
    return result;
  } catch (error) {
    return;
  }
}

Эта функция возвращает строку город часового пояса пользователя, например "Montreal" или undefined, если среда выполнения не поддерживает пространство имен Intl.

Затем мы определяем нашу основную функцию guessCallingCode, которая вызывает getUserTimeZoneCity и сопоставляет полученное название города с нашим предварительно заполненным объектом JSON известных сопоставлений города с кодом вызова:

function guessCallingCode(): string | undefined {
  const timezoneCity = getUserTimeZoneCity();
  if (!timezoneCity) return;
  const callingCode = timezoneCityToCallingCodeObj[timezoneCity];
  return callingCode;
}

Только с помощью этих двух функций вы можете легко и точно оценить телефонный код страны пользователя.

Если вам интересно, как генерируется JSON-код города часового пояса для вызывающего кода, ознакомьтесь с этим постом, в котором рассказывается о способе сопоставления городов часового пояса со странами. Я основал свой код на этом подходе для сопоставления городов часовых поясов с телефонными кодами стран.

Преимущества угадывания по часовому поясу

Зачем угадывать телефонные коды стран пользователей на основе их часового пояса? Вот некоторые из ключевых преимуществ:

  1. Решение на стороне клиента. В отличие от поиска IP-адресов на стороне сервера, угадывание на основе часового пояса может выполняться полностью на стороне клиента, что снижает задержку и высвобождает ресурсы сервера.
  2. Легкий: библиотека, опубликованная на npm, небольшая (‹ 15 КБ), что позволяет легко интегрировать ее в широкий спектр проектов.
  3. Высокий уровень точности. Большинство устройств имеют точные настройки часового пояса, что делает этот подход очень точным и надежным. Кроме того, он более точен, чем методы на основе IP, которые могут быть сброшены с помощью VPN или прокси-серверов.

В дополнение к этим преимуществам, поскольку Intl является API интернационализации ECMAScript, вы можете использовать его как в современных браузерах, так и в node.js.

Заключение

Угадывание телефонных кодов стран пользователей на основе их часового пояса может стать ценным дополнением к набору инструментов любого разработчика. Если вы создаете приложение для обмена сообщениями, службу совместного использования или любое другое приложение, использующее телефонные номера, рассмотрите возможность использования угадай код вызова.

Ссылки по затронутым темам:

Я надеюсь, что эта статья предоставила полезное объяснение того, как определить телефонные коды страны с помощью JavaScript и преимущества использования часовых поясов в качестве справки. Если вы нашли угадай код вызова полезным, рассмотрите возможность поставить ему звезду на GitHub Repo❤️. Пожалуйста, не стесняйтесь делиться любыми отзывами или вопросами в разделе комментариев ниже. Ваше участие очень ценится!