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ì của trò chơi. 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. Cách nhập trình bổ trợ, hãy thực hiện 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 lựa chọn trên trình đơn Unity IDE Thành phần > Nhập gói > Custom Package (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 một Google > Trình đơn phụ Play Instant trong Unity. Chiến dịch này trình đơn con cung cấp các tuỳ chọn sau.

Chế độ cài đặt bản dựng

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

  • Tạo một Biểu tượng định nghĩa tập lệnh có tên là PLAY_INSTANT để dùng cho tập lệnh bằng #if PLAY_INSTANT#endif.
  • Quản lý bản cập nhật cho AndroidManifest.xml cho một số thay đổi bắt buộc như dưới dạng 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, đưa ra các đề xuất để trợ giúp tối ưu hoá dịch vụ hỗ trợ cho Google Play Instant, phát triển dựa trên đồ hoạ 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)

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

Để giảm kích thước APK nhiều hơn nữa, hãy mở Trình quản lý gói Unity và xoá bất kỳ 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 ứng dụng tức thì dựa trên Unity bằng cách đóng gói một số 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 vào APK ứng dụng tức thì và sau khi ứng dụng tức thì khởi động, ứng dụng 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à giúp người dùng có 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 hộp thoại cài đặt trên Cửa hàng Play và để chuyển trạng thái ứng dụng tức thì sang ứng dụng cần cài đặt.

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

Ứng dụng tức thì có nút Install (Cài đặt) có thể hiển thị lượt cài đặt trên Cửa hàng Play bằng cách gọi nội dung sau 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ó phương thức nạp chồng cho phép một hoặc nhiều như sau:

  • Xác định xem người dùng có huỷ 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 được chỉ định.
  • Chuyển chuỗi liên kết giới thiệu lượt cài đặt qua thông số referrer.
  • Chuyển trạng thái về phiên trò chơi hiện tại qua PutPostInstallIntentStringExtra().

Những điều này được minh hoạ trong ví dụ sau:

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 cách sử dụng postInstallIntent được cung cấp. Ứng dụng đã cài đặt có thể truy xuất một giá trị được thiết lập trong postInstallIntent bằng cách sử dụng:

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

Lưu ý:

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

Cookie API cung cấp các phương thức để chuyển cookie (ví dụ: mã nhận dạng người chơi hoặc cấp độ người chơi dữ liệu hoàn thành) từ một ứng dụng tức thì sang ứng dụng đã cài đặt tương ứng. Bỏ thích Phần bổ sung postInstallIntent, trạng thái cookie vẫn áp dụng 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 bằng cách sử dụ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.
}