Sử dụng Google Play Instant với Unity

Trình bổ trợ Google Play Instant cho Unity sẽ định cấu hình dự án Unity để tạo một phiên bản ứng dụng tức thì cho trò chơi của bạn. Hướng dẫn này mô tả cách cài đặt và sử dụng trình bổ trợ này.

Tải xuống và nhập trình bổ trợ

Trình bổ trợ này là một phần của Trình bổ trợ Google Play cho Unity. Để nhập trình bổ trợ, hãy làm theo các bước sau:

  1. Tải bản phát hành mới nhất xuống từ các Trình bổ trợ Google Play dành cho các bản phát hành Unity.
  2. Nhập tệp .unitypackage bằng cách chọn tuỳ chọn trình đơn Unity IDE Assets > Import package > Custom Package (Thành phần > Nhập gói > Gói tuỳ chỉnh) và nhập tất cả các mục.

Các tính năng của Trình chỉnh sửa Unity

Nhập trình bổ trợ để thêm trình đơn phụ Google > Play Instant trong Unity. Trình đơn phụ này cung cấp các tuỳ chọn sau.

Cài đặt bản dựng

Mở một cửa sổ cho phép chuyển đổi giữa chế độ phát triển Đã cài đặtTức thì. Khi chuyển sang chế độ Instant, bạn sẽ thực hiện các thay đổi sau:

  • Tạo một Biểu tượng định nghĩa tập lệnh có tên là PLAY_INSTANT, có thể dùng để viết tập lệnh bằng #if PLAY_INSTANT#endif.
  • Quản lý các bản cập nhật của AndroidManifest.xml đối với một số thay đổi bắt buộc như android:targetSandboxVersion.

Cài đặt trình phát

Hộp thoại Player Settings (Cài đặt trình phát) như trong Hình 1, hiển thị các đề xuất để giúp bạn tối ưu hoá khả năng hỗ trợ cho Google Play Instant, phát triển dựa trên các API đồ hoạ tương thích hơn và giảm kích thước APK.

Các đề xuất cụ thể bao gồm chỉ sử dụng OpenGL ES 2.0 và tắt tính năng Kết xuất đa luồng.
Hình 1. Hộp thoại Player Settings (Cài đặt trình phát)

Những chế độ cài đặt này về người chơi được chia thành chế độ cài đặt Bắt buộcRecommended (Đề xuất). Nếu một chế độ cài đặt có nút Update (Cập nhật) tương ứng, hãy nhấp vào nút đó để thay đổi chế độ cài đặt thành giá trị ưu tiên.

Để giảm thêm kích thước APK, hãy mở Trình quản lý gói Unity và xoá mọi gói không sử dụng.

Triển khai nhanh

Tính năng Triển khai nhanh có thể giảm kích thước của một ứng dụng tức thì dựa trên Unity bằng cách đóng gói một số thành phần trong một AssetBundle. Khi sử dụng tính năng Triển khai nhanh, công cụ phát triển trò chơi Unity và màn hình tải sẽ được đóng gói thành một APK ứng dụng tức thì. Sau khi ứng dụng tức thì khởi động, công cụ này sẽ truy xuất AssetBundle từ máy chủ.

Hỗ trợ quy trình cài đặt

Mục tiêu của nhiều ứng dụng tức thì là mang đến cho người dùng cơ hội trải nghiệm ứng dụng trước khi cài đặt phiên bản đầy đủ. Trình bổ trợ Google Play Instant cho Unity cung cấp các API để hiển thị hộp thoại cài đặt Cửa hàng Play và để chuyển trạng thái từ ứng dụng tức thì sang ứng dụng đã cài đặt.

Hiển thị lời nhắc cài đặt

Ứng dụng tức thì có nút Cài đặt có thể hiển thị hộp thoại cài đặt trên Cửa hàng Play bằng cách gọi lệnh sau đây từ trình xử lý lượt nhấp vào nút cài đặt:

Google.Play.Instant.InstallLauncher.ShowInstallPrompt();

Phương thức ShowInstallPrompt() có một phương thức nạp chồng cho phép thực hiện một hoặc nhiều thao tác sau:

  • Xác định xem người dùng có huỷ khỏi quá trình cài đặt hay không. Ghi đè onActivityResult() trong hoạt động chính của ứng dụng tức thì và kiểm tra RESULT_CANCELED trên requestCode đã chỉ định.
  • Truyền một chuỗi liên kết giới thiệu cài đặt qua tham số referrer.
  • Chuyển trạng thái về phiên trò chơi hiện tại qua PutPostInstallIntentStringExtra().

Bạn có thể xem ví dụ minh hoạ sau đây:

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");
}

Nếu người dùng hoàn tất quá trình cài đặt ứng dụng, Cửa hàng Play sẽ chạy lại ứng dụng bằng postInstallIntent được cung cấp. Ứng dụng đã cài đặt có thể truy xuất một giá trị được đặt trong postInstallIntent bằng cách sử dụng các phương thức sau:

var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");

Notes:

  • Các ứng dụng bổ sung có trong postInstallIntent có thể không đến được ứng dụng đã cài đặt nếu người dùng cài đặt ứng dụng nhưng huỷ quá trình khởi chạy sau khi cài đặt. Việc chuyển các thành phần bổ sung ý định phù hợp hơn để duy trì trạng thái phiên đang hoạt động thay vì giữ trạng thái cố định; đối với API này, hãy tham chiếu đến Cookie API.
  • Bất cứ ai cũng có thể tạo ý định với các trường bổ sung để khởi chạy ứng dụng đã cài đặt. Vì vậy, nếu tải trọng mang lại giá trị nào đó, hãy thiết kế tải trọng sao cho chỉ có thể sử dụng một lần, ký bằng mã hoá và xác minh chữ ký trên máy chủ.

Cookie API cung cấp các phương thức để truyền cookie (ví dụ: mã nhận dạng người chơi hoặc dữ liệu hoàn thành cấp độ) từ một ứng dụng tức thì sang ứng dụng đã cài đặt tương ứng. Không giống như các ứng dụng khác postInstallIntent, trạng thái cookie sẽ có sẵn ngay cả khi người dùng không khởi chạy ngay ứng dụng đã cài đặt. Ví dụ: ứng dụng tức thì có thể gọi mã sau từ trình xử lý lượt nhấp vào nút cài đặt:

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);
}

Nếu người dùng hoàn tất quá trình cài đặt ứng dụng, thì ứng dụng đã cài đặt có thể truy xuất dữ liệu cookie bằng mã sau:

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.
}