Обновления 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
Phrase OTA SDK разработаны для обеспечения функциональности приложений, даже если OTA API недоступен. В таких случаях SDK переключается на последние успешно полученные переводы, сохраненные на устройстве, или на встроенные переводы, включенные в пакет приложения. Это предотвращает ошибки или отсутствие строк для конечных пользователей. Чтобы гарантировать надежный резервный вариант, встроенные переводы следует обновлять с каждым выпуском приложения.
Дистрибутивы — это настроенная конфигурация, которая определяет, как и где доставляются OTA-обновления для конкретной платформы или проекта.
Целевые платформы определяются в рамках дистрибутива:
-
iOS
-
Android
-
Флаттер
-
i18next
-
Rails
Возможно создать несколько дистрибутивов, однако в идеале для каждого проекта используется один дистрибутив. При использовании одного дистрибутива для iOS и Android заполнители для обоих форматов преобразуются автоматически.
Разрешения
Управление OTA-дистрибутивами и релизами ограничено назначением проекта. Пользователи управляют ими только в тех проектах, к которым они прикреплены.
Роли владельца, администратора, менеджера проекта, разработчика и дизайнера по умолчанию имеют полный доступ к OTA-дистрибутивам и релизам. Роль переводчика не имеет доступа.
Владельцы и администраторы имеют доступ ко всем проектам.
Перед созданием дистрибутива пользователям необходимо получить разрешение на уровне учетной записи для управления дистрибутивами. Новый дистрибутив привязывается только к тем проектам, к которым у пользователя есть доступ.
Для более гибкого контроля корпоративные клиенты могут связаться со службой поддержки по поводу пользовательской роли.
Резервные варианты
Если в настройках языка проекта, к которому подключен дистрибутив, установлены резервные языки, то при наличии запрошенного языка, но отсутствии перевода для ключа, будут отображаться строки из выбранного языка.
Если используется специфический для страны язык (например, en-GB), но он не является частью релиза, система может использовать стандартную версию (например, en) этого языка, если она существует в проекте. Если запрашиваемый язык не найден вовсе, вместо него может быть предоставлена локаль проекта по умолчанию.
Резервные языки не будут работать с связанными ключами.
Настройка проекта применяется при создании файла релиза. Это не зависит от опции на вкладке .
Опция в дистрибутиве разрешается, когда устройство запрашивает релиз. Она охватывает только отсутствующие или непереведённые ключи, но не непроверенные переводы.
Создать дистрибутив
Чтобы создать дистрибутив, выполните следующие действия:
-
В блоке на странице нажмите Configure или на число существующих конфигураций, если они уже есть.
Откроется страница , на которой отображаются существующие конфигурации.
-
Нажмите New distribution. Откроется окно .
-
На вкладке General укажите , , с которым связан дистрибутив, необходимые и необходимые .
-
Для дистрибутивов Android перейдите на вкладку Android, чтобы выбрать вариант формата, который при необходимости заключает любой перевод, включая HTML-теги, в CDATA.
-
После выбора проекта для связи с дистрибутивом становится доступна вкладка Scheduling. При необходимости используйте эту вкладку, чтобы настроить запланированные OTA-релизы в дистрибутиве.
-
-
На вкладке Fallback languages выберите специфические для дистрибутива настройки резервного языка по мере необходимости. Опции резервного языка имеют приоритет в том порядке, в котором они отображаются в списке.
-
При необходимости перейдите на вкладку Translations, чтобы выбрать опцию использования последней проверенной версии переводов. Включайте эту опцию только при работе с расширенным рабочим процессом проверки.
-
Нажмите Сохранить.
Сведения о дистрибутиве отображаются с идентификаторами, требуемыми SDK. Сведения можно просмотреть снова, нажав на дистрибутив на странице .
Чтобы обновить переводы, создайте новый релиз в дистрибутиве. Текущее состояние проекта экспортируется и становится доступным для подключенных клиентов.
Чтобы создать релиз, выполните следующие действия:
-
На странице Over the air нажмите Add release рядом с нужным дистрибутивом.
Откроется окно .
-
Укажите , обязательную , , и .
Локали, которые еще не добавлены в список языков дистрибутива, отображаются как невыбранные и недоступные для выбора. Добавьте необходимые языки в дистрибутив, чтобы сделать их доступными для выбора в будущих релизах.
Если при создании релиза вручную не выбрана ни одна локаль, все локали, настроенные в дистрибутиве, включаются в релиз по умолчанию.
При необходимости введите теги, чтобы включить в релиз только ключи с определенными тегами. Добавление фильтра тегов к релизу включает только те ключи, которые содержат этот тег. Ключи без этого тега полностью исключаются из релиза, и подключенное приложение для этих ключей использует статические файлы перевода, встроенные локально в его кодовую базу. Фильтрация по тегам работает независимо от ветвления: если ветвление включено, выберите ветку и соответствующий тег(и); если ветвление не включено, выберите только соответствующий тег(и).
-
Нажмите Сохранить.
Релиз добавляется в список в нижней части страницы сведений о дистрибутиве.
Чтобы настроить регулярное расписание для выпуска дистрибутива, выполните следующие действия:
-
На странице нажмите на значок шестеренки
рядом с нужным дистрибутивом.
Окно отображается.
-
Выберите вкладку Планирование выпуска и нажмите .
Отображаются параметры планирования выпуска.
-
В раскрывающемся списке выберите частоту выпуска из доступных вариантов:
-
-
Выберите нужные дни недели для запланированных выпусков.
-
-
Укажите время и соответствующий .
-
При необходимости выберите , и для запланированных выпусков.
-
Поле отображается только в том случае, если в проекте включено использование ветвей. Выбор ветви обновляет список локалей и языков.
-
-
При необходимости укажите версии приложения в полях и .
Оставьте пустыми, чтобы применить запланированный выпуск ко всем версиям приложения.
-
Нажмите «Сохранить».
Дистрибутив обновляется информацией о планировании выпуска.
Отключение расписания останавливает автоматический выпуск дистрибутива, но настроенные параметры сохраняются.
Примечание
В пользовательском интерфейсе Strings нет возможности приостановить или временно отключить OTA. Чтобы запретить приложению получать переводы, удалите идентификатор дистрибутива из конфигурации OTA приложения; восстановите идентификатор, чтобы возобновить OTA. В крайнем случае удалите дистрибутив и создайте новый.
Интеграция соответствующего мобильного SDK или веб-библиотеки позволяет обновлять переводы одним щелчком мыши, а также предоставляет метрики для измерения использования. Отчеты мобильного SDK и веб-библиотеки предоставляют ценную информацию об активных пользователях приложения и языках, которые они используют. Этот набор отчетов доступен для каждого дистрибутива, а данные обновляются дважды в день.
Предоставляются отчеты по количеству активных пользователей, общим запросам, запросам по языкам, запросам по платформам, а также по языкам устройств, которые не поддерживаются.
Отчеты для каждого дистрибутива доступны через значок на странице .
Количество активных пользователей, отображаемое в этих отчетах, отражает скользящее 30-дневное окно, основанное на текущей дате, а не на фиксированном календарном или платёжном периоде.
Техническая документация по интеграции OTA SDKs доступна в файле README каждого репозитория проекта: