Плагин Google Play Instant для Unity настраивает ваш проект Unity для создания мгновенной версии приложения вашей игры. В этом руководстве описывается, как установить и использовать этот плагин.
Загрузите и импортируйте плагин
Плагин является частью плагинов Google Play для Unity. Чтобы импортировать плагин, выполните следующие действия:
- Загрузите последнюю версию плагинов Google Play для выпусков Unity .
- Импортируйте файл
.unitypackage
, выбрав пункт меню Unity IDE «Активы» > «Импортировать пакет» > «Пользовательский пакет» и импортировав все элементы.
Возможности редактора Unity
Импортируйте плагин, чтобы добавить подменю Google > Play Instant в Unity. Это подменю предоставляет следующие параметры.
Настройки сборки
Открывает окно, позволяющее переключаться между установленным и мгновенным режимами разработки. Переключение на 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
могут не достичь установленного приложения, если пользователь устанавливает приложение, но отменяет запуск после установки. Передача дополнительных намерений лучше подходит для сохранения активного состояния сеанса, чем для сохранения постоянного состояния; для последнего обратитесь к API cookie. - Любой может создать намерение с дополнительными полями для запуска установленного приложения, поэтому, если полезная нагрузка предоставляет что-то ценное, спроектируйте полезную нагрузку так, чтобы ее можно было использовать только один раз, криптографически подпишите ее и проверьте подпись на сервере.
Используйте 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.
}