Внимание: функция Google Play Instant больше не будет доступна. Начиная с декабря 2025 года, публикация Instant-приложений через Google Play будет невозможна, и все API Instant для сервисов Google Play перестанут работать. Пользователи больше не смогут получать Instant-приложения от Play никаким способом.
Мы вносим это изменение, основываясь на отзывах разработчиков и наших постоянных инвестициях в улучшение экосистемы с момента запуска Google Play Instant.
Для дальнейшей оптимизации с целью увеличения числа пользователей мы рекомендуем разработчикам направлять пользователей в свои основные приложения или игры, используя диплинки для перенаправления их на определенные страницы или функции, когда это необходимо.
Плагин Google Play Instant для Unity настраивает ваш проект Unity для создания мгновенной версии приложения вашей игры. В этом руководстве описано, как установить и использовать этот плагин.
Скачайте и импортируйте плагин.
Этот плагин входит в состав плагинов Google Play для Unity. Для импорта плагина выполните следующие действия:
- Загрузите последнюю версию плагина Plugins for Unity из Google Play .
- Импортируйте файл
.unitypackage, выбрав в меню Unity пункт Assets > Import package > Custom Package и импортировав все элементы.
Функции редактора Unity
Импортируйте плагин, чтобы добавить в Unity подменю Google > Play Instant . Это подменю предоставляет следующие возможности.
Настройки сборки
Открывает окно, позволяющее переключаться между режимами разработки «Установленный» и «Мгновенный» . Переключение в режим «Мгновенный» вносит следующие изменения:
- Создает определяющий символ для скриптов с именем
PLAY_INSTANT, который можно использовать для написания скриптов с помощью#if PLAY_INSTANTи#endif. - Управляет обновлениями файла AndroidManifest.xml для внесения необходимых изменений, таких как android:targetSandboxVersion .
Настройки проигрывателя
Диалоговое окно «Настройки проигрывателя» , показанное на рисунке 1, отображает предложения, которые помогут вам оптимизировать поддержку Google Play Instant, разрабатывать приложения с использованием более совместимых графических API и уменьшить размер APK-файла.

Эти настройки проигрывателя разделены на обязательные и рекомендуемые . Если для какой-либо настройки есть соответствующая кнопка «Обновить» , нажмите на нее, чтобы изменить значение на желаемое.
Чтобы еще больше уменьшить размер APK-файла, откройте менеджер пакетов Unity и удалите все неиспользуемые пакеты.
Быстрое развертывание
Функция Quick Deploy позволяет уменьшить размер мгновенного приложения на основе Unity, упаковывая некоторые ресурсы в AssetBundle . При использовании Quick Deploy игровой движок Unity и экран загрузки упаковываются в APK-файл мгновенного приложения, и после запуска мгновенного приложения оно получает AssetBundle с сервера.
Поддержка рабочих процессов установки
Цель многих мгновенных приложений — дать пользователям возможность протестировать приложение перед установкой полной версии. Плагин Google Play Instant для Unity предоставляет API для отображения диалогового окна установки из Play Store и для передачи состояния из мгновенного приложения в установленное.
Показать запрос на установку
Приложение с кнопкой «Установить» может отобразить диалоговое окно установки из Play Store, вызвав следующий код в обработчике нажатия кнопки «Установить»:
Google.Play.Instant.InstallLauncher.ShowInstallPrompt();
Метод ShowInstallPrompt() имеет перегрузку, которая позволяет реализовать одно или несколько из следующих действий:
- Определение того, отменил ли пользователь процесс установки. Переопределите
onActivityResult()в главном окне приложения и проверьте наличиеRESULT_CANCELEDдля указанногоrequestCode. - Передача строки, указывающей на источник установки, через параметр
referrer. - Передача информации о текущей игровой сессии через
PutPostInstallIntentStringExtra().
Это демонстрируется на следующем примере:
using Google.Play.Instant;
...
const int requestCode = 123;
var sessionInfo = /* Object serialized as a string representing player's current location, etc. */;
using (var activity = UnityPlayerHelper.GetCurrentActivity())
using (var postInstallIntent = InstallLauncher.CreatePostInstallIntent(activity))
{
InstallLauncher.PutPostInstallIntentStringExtra(postInstallIntent, "sessionInfo", sessionInfo);
InstallLauncher.ShowInstallPrompt(activity, requestCode, postInstallIntent, "test-referrer");
}
Если пользователь завершит установку приложения, Play Store перезапустит приложение, используя предоставленный postInstallIntent . Установленное приложение может получить значение, установленное в postInstallIntent следующим образом:
var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");
Примечания:
- Дополнительные данные, включенные в
postInstallIntentмогут не дойти до установленного приложения, если пользователь установит приложение, но отменит запуск после установки. Передача дополнительных данных в Intent лучше подходит для сохранения состояния активной сессии, чем для сохранения постоянного состояния; для последнего обратитесь к API Cookie. - Любой может создать Intent с дополнительными полями для запуска установленного приложения, поэтому, если полезная нагрузка предоставляет что-то ценное, разработайте полезную нагрузку таким образом, чтобы она могла быть использована только один раз, криптографически подпишите её и проверьте подпись на сервере.
Используйте API для работы с файлами cookie.
API для работы с файлами cookie предоставляет методы для передачи cookie (например, идентификатора игрока или данных о прохождении уровня) из мгновенного приложения в соответствующее установленное приложение. В отличие от дополнительных параметров postInstallIntent , состояние cookie доступно, даже если пользователь не запускает установленное приложение сразу. Например, мгновенное приложение может вызвать следующий код из обработчика нажатия кнопки установки:
using Google.Play.Instant;
...
var playerInfo = /* Object serialized as a string representing game levels completed, etc. */;
var cookieBytes = System.Text.Encoding.UTF8.GetBytes(playerInfo);
try
{
var maxCookieSize = CookieApi.GetInstantAppCookieMaxSize();
if (cookieBytes.Length > maxCookieSize)
{
UnityEngine.Debug.LogErrorFormat("Cookie length {0} exceeds limit {1}.", cookieBytes.Length, maxCookieSize);
}
else if (CookieApi.SetInstantAppCookie(cookieBytes))
{
UnityEngine.Debug.Log("Successfully set cookie. Now display the app install dialog...");
InstallLauncher.ShowInstallPrompt();
}
else
{
UnityEngine.Debug.LogError("Failed to set cookie.");
}
}
catch (CookieApi.InstantAppCookieException ex)
{
UnityEngine.Debug.LogErrorFormat("Failed to set cookie: {0}", ex);
}
Если пользователь завершит установку приложения, установленное приложение сможет получить данные cookie, используя следующий код:
var cookieBytes = CookieApi.GetInstantAppCookie();
var playerInfoString = System.Text.Encoding.UTF8.GetString(cookieBytes);
if (!string.IsNullOrEmpty(playerInfoString))
{
// Initialize game state based on the cookie, e.g. skip tutorial level completed in instant app.
}