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

Cảnh báo: Google Play Instant sẽ không còn hoạt động nữa. Kể từ tháng 12 năm 2025, bạn sẽ không thể xuất bản Ứng dụng tức thì thông qua Google Play và tất cả API Instant của Dịch vụ Google Play sẽ không còn hoạt động. Play sẽ không còn phân phối Ứng dụng tức thì cho người dùng bằng bất kỳ cơ chế nào.

Chúng tôi thực hiện thay đổi này dựa trên ý kiến phản hồi của nhà phát triển và những khoản đầu tư liên tục của chúng tôi để cải thiện hệ sinh thái kể từ khi ra mắt Google Play Instant.

Để tiếp tục tối ưu hoá cho việc thu hút thêm người dùng, nhà phát triển nên chuyển hướng người dùng đến ứng dụng hoặc trò chơi thông thường của mình bằng đường liên kết sâu để chuyển hướng họ đến những hành trình hoặc tính năng cụ thể khi thích hợp.

Trình bổ trợ Google Play Instant cho Unity định cấu hình dự án Unity của bạn để tạo 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. Để 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 mục trong trình đơn Unity IDE Assets > Import package > Custom Package (Nội dung > Nhập gói > Gói tuỳ chỉnh) rồi 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 trình đơn phụ Google > Play Instant trong Unity. Trình đơn con này cung cấp các lựa chọn sau.

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

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

  • Tạo một Scripting Define Symbol (Ký hiệu xác định tập lệnh) có tên là PLAY_INSTANT. Ký hiệu này có thể dùng để tạo tập lệnh bằng #if PLAY_INSTANT#endif.
  • Quản lý các nội dung cập nhật đối với AndroidManifest.xml cho một số thay đổi bắt buộc, chẳng hạn như android:targetSandboxVersion.

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

Hộp thoại Player Settings (Chế độ cài đặt trình phát) (xuất hiện trong Hình 1) cho thấy các đề xuất giúp bạn tối ưu hoá khả năng hỗ trợ 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)

Các chế độ cài đặt trình phát này được chia thành các chế độ cài đặt Bắt buộcNên dùng. Nếu một chế độ cài đặt có nút 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ị bạn muốn.

Để giảm thêm kích thước tệp APK, hãy mở Unity Package Manager (Trình quản lý gói Unity) rồi xoá mọi gói không dùng đến.

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ố tài sản trong 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 một APK ứng dụng tức thì. Sau khi ứng dụng tức thì bắt đầu, ứng dụng này sẽ truy xuất AssetBundle từ mộ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 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 lời nhắc cài đặt

Mộ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 Cửa hàng Play bằng cách gọi nội dung 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ỷ quy 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.
  • Truyền một chuỗi liên kết giới thiệu cài đặt thông qua tham số referrer.
  • Truyền trạng thái về phiên trò chơi hiện tại thông qua PutPostInstallIntentStringExtra().

Các bước 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ẽ khởi chạy lại ứng dụng bằng postInstallIntent đã 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 nội dung sau:

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

Lưu ý:

  • Các phần 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ỷ thao tác khởi chạy sau khi cài đặt. Việc truyền các phần bổ sung của ý định phù hợp hơn để duy trì trạng thái phiên hoạt động so với việc duy trì trạng thái liên tục; đối với trạng thái liên tục, hãy tham khảo Cookie API.
  • Bất kỳ ai cũng có thể tạo một ý định có các trường bổ sung để chạy ứng dụng đã cài đặt. Vì vậy, nếu tải trọng cấp một thứ gì đó có giá trị, hãy thiết kế tải trọng sao cho tải trọng đó chỉ có thể dùng một lần, ký mã hoá tải trọng và xác minh chữ ký trên một 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 phần bổ sung postInstallIntent, trạng thái cookie vẫn 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ụ: một ứng dụng tức thì có thể gọi mã sau đây 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.
}