Обновления Over-the-Air (OTA) предлагают гибкий способ доставки обновлений перевода для мобильных и веб-приложений без необходимости выпуска новой версии в App Store, Google Play или на других платформах развертывания. Этот подход поддерживает непрерывную локализацию и гибкие рабочие процессы разработки за счет сокращения задержек и ручных процессов.
Функция OTA в Phrase Strings интегрируется с платформами iOS, Android, React Native, Flutter, i18next и Rails. Обновления для текстовых меток мгновенно отправляются в мобильные приложения.
Чтобы применить обновленные настройки, необходимо создать новый релиз. Весь контент, включенный в релиз, должен быть доступен в Phrase Strings, которая передает переводы непосредственно в приложение. Если контент отсутствует, переводы не будут доставлены.
Для мобильных приложений OTA требует интеграции соответствующего комплекта средств разработки (SDK) в приложение для получения переводов из Phrase Strings во время выполнения.
Рекомендации
Подробную информацию о распространении, релизе и справочных материалах по API см. в Центре разработчиков.
При первом запуске приложения, использующего SDK для iOS, Android, React Native или Flutter, на устройстве создается уникальный случайный идентификатор устройства. Этот идентификатор отслеживает активных пользователей в течение определенного периода времени. Он не используется для каких-либо иных форм или средств отслеживания и не содержит никакой информации о пользователе или устройстве.
Количество OTA-запросов и число ежемесячных активных пользователей (MAU) ограничены в зависимости от выбранного тарифного плана.
MAU — это количество уникальных устройств, с которых запрашиваются переводы. Каждому устройству присваивается случайный ID. MAU рассчитывается на основе количества уникальных ID, присвоенных за последние 30 дней. Каждое взаимодействие с серверами Phrase считается запросом.
Данные, отправляемые с OTA-запросами
SDK взаимодействует со службой OTA для проверки обновлений и включает следующие сведения в каждый запрос:
-
Идентификатор устройства (например, "F3AFCB10-80A2-84CB-94C0-27F5EF58876D"). Уникален для этого приложения и поэтому не позволяет отслеживать конкретное устройство.)
-
Версия приложения (например, ## 1.2.0.
-
Дата последнего обновления файла перевода (например, ## 1542187679.
-
Версия SDK (например, ## 1.0.0.
-
Локаль (например, "de-DE")
-
Формат файла (например, "strings")
-
Клиент (например, "ios")
-
Distribution ID (ID дистрибутива)
-
Секрет среды (для различения среды разработки и продакшн-среды)
Домены, используемые SDK:
Центр обработки данных в ЕС
-
ota.eu.phrase.com
-
cdn.eu.phrase.com
-
ota.phraseapp.com
-
cdn.phraseapp.com
Центр обработки данных в США
-
ota.us.phrase.com
-
cdn.us.phrase.com
SDK для OTA от Phrase разработаны так, чтобы приложения оставались работоспособными, даже если OTA API недоступен. В таких случаях SDK переключается на последние успешно полученные переводы, сохраненные на устройстве, или на встроенные переводы, включенные в пакет приложения. Это предотвращает ошибки или отсутствие строк для конечных пользователей. Чтобы гарантировать надежный резервный вариант, встроенные переводы следует обновлять с каждым релизом приложения.
Дистрибутивы — это настроенная конфигурация, которая определяет, как и где доставляются OTA-обновления для конкретной платформы или проекта.
Целевые платформы определяются в рамках дистрибутива:
-
iOS
-
Android
-
Флаттер
-
i18next
-
Rails
Возможно создание нескольких дистрибутивов, но в идеале на один проект должен приходиться один дистрибутив. При использовании одного дистрибутива для iOS и Android заполнители для обоих форматов преобразуются автоматически.
Разрешения
Управление OTA-дистрибутивами и релизами ограничивается назначением на проект. Пользователи управляют ими только в тех проектах, к которым они назначены.
Роли владельца, администратора, менеджера проекта, разработчика и дизайнера по умолчанию имеют полный доступ к OTA-дистрибутивам и релизам. Роль переводчика не имеет доступа.
Владельцы и администраторы имеют доступ ко всем проектам.
Для создания дистрибутива пользователям необходимо разрешение на уровне учетной записи. Новый дистрибутив привязывается только к тем проектам, к которым у пользователя есть доступ.
Для более детального контроля корпоративные клиенты могут связаться со службой поддержки по поводу пользовательской роли.
Резервные варианты
Если в настройках языка проекта, к которому подключен дистрибутив, установлены резервные языки, то при наличии запрошенного языка, но отсутствии перевода для ключа, будут отображаться строки из выбранного языка.
Если используется специфический для страны язык (например, en-GB), но он не является частью релиза, система может использовать стандартную версию (например, en) этого языка, если она существует в проекте. Если запрашиваемый язык не найден вовсе, вместо него может быть предложена локаль проекта по умолчанию.
Резервные варианты не будут работать с связанными ключами.
Создать дистрибутив
Чтобы создать дистрибутив, выполните следующие действия:
-
В блоке на странице нажмите Configure или число конфигураций, если они уже существуют.
Откроется страница , на которой отображаются существующие конфигурации.
-
Нажмите Новый дистрибутив. Откроется окно .
-
На вкладке Общие укажите , с каким связан дистрибутив, необходимые и необходимые .
-
Для дистрибуций Android перейдите на вкладку Android, чтобы выбрать вариант формата, который при необходимости заключает любой перевод, включая HTML-теги, в CDATA.
-
После выбора проекта для ассоциации с дистрибуцией становится доступна вкладка Планирование. При необходимости используйте эту вкладку, чтобы настроить запланированные OTA-релизы в дистрибуции.
-
-
На вкладке Резервные языки выберите специфические для дистрибуции настройки резервирования по мере необходимости. Опции резервирования имеют приоритет в том порядке, в котором они отображаются в списке.
-
При необходимости перейдите на вкладку Переводы, чтобы выбрать опцию использования последней проверенной версии переводов. Включайте эту опцию только при работе с расширенным рабочим процессом проверки.
-
Нажмите Сохранить.
Детали дистрибутива отображаются с идентификаторами, необходимыми для SDK. Детали можно просмотреть снова, нажав на дистрибуцию на странице .
Чтобы обновить переводы, создайте новый релиз в рамках дистрибуции. Текущее состояние проекта экспортируется и становится доступным для подключённых клиентов.
Чтобы создать релиз, выполните следующие действия:
-
На странице Over the air нажмите Добавить релиз рядом с нужной дистрибуцией.
Откроется окно .
-
Укажите , требуемую , , и .
Локали, которые ещё не добавлены в список языков дистрибутива, отображаются как невыбранные и недоступные для выбора. Добавьте необходимые языки в дистрибутив, чтобы сделать их доступными для выбора в будущих релизах.
Если при создании релиза локали не выбраны вручную, все локали, настроенные в дистрибутиве, включаются в релиз по умолчанию.
При необходимости введите теги, чтобы включить в релиз только ключи с определенными тегами. Добавление фильтра тегов к релизу включает только ключи, содержащие этот тег. Ключи без этого тега полностью исключаются из релиза, и подключенное приложение для этих ключей использует статические файлы переводов, встроенные локально в его кодовую базу. Фильтрация по тегам работает независимо от ветвления: если ветвление включено, выберите ветку и соответствующий тег(и); если ветвление не включено, выберите только соответствующий тег(и).
-
Нажмите Сохранить.
Релиз добавляется в список в нижней части страницы сведений о дистрибутиве.
Чтобы настроить регулярное расписание выпуска дистрибутива, выполните следующие действия:
-
На странице нажмите на значок шестерёнки
рядом с нужным распространением.
Отобразится окно .
-
Выберите вкладку Планирование релиза и нажмите .
Отобразятся параметры планирования релиза.
-
В раскрывающемся списке выберите частоту выпуска, выбрав один из доступных вариантов:
-
-
Выберите нужные дни недели для запланированных релизов.
-
-
Укажите время и соответствующий .
-
При необходимости выберите , и для запланированных релизов.
-
Поле отображается только в том случае, если в проекте включено ветвление. Выбор ветки обновляет список локалей и языков.
-
-
При необходимости укажите версии приложения в полях и .
Оставьте пустым, чтобы применить запланированный релиз ко всем версиям приложения.
-
Нажмите «Сохранить».
Дистрибутив обновляется информацией о планировании релиза.
Отключение расписания останавливает автоматический выпуск распространения, но настроенные параметры сохраняются.
Примечание
В пользовательском интерфейсе Strings нет возможности приостановить или временно отключить OTA. Чтобы запретить приложению получать переводы, удалите идентификатор распространения из конфигурации OTA приложения; восстановите идентификатор, чтобы возобновить OTA. В крайнем случае удалите распространение и создайте новое.
Интеграция соответствующего мобильного SDK или веб-библиотеки позволяет обновлять переводы одним щелчком мыши, а также предоставляет метрики для измерения использования. Отчеты мобильного SDK и веб-библиотеки дают ценную информацию об активных пользователях приложения и языках их приложений. Этот набор отчетов доступен для каждого распространения, а данные обновляются дважды в день.
Отчеты предоставляются по количеству активных пользователей, общим запросам, запросам по языкам, запросам по платформам и по непредоставленным языкам устройств.
Отчеты для каждого распространения доступны через значок на странице .
Количество активных пользователей, указанное в этих отчетах, отражает скользящее 30-дневное окно, основанное на текущей дате, а не фиксированный календарный или расчетный период.
Техническая документация по интеграции OTA SDK доступна в файле README каждого репозитория проекта: