Phát hiện và phân phối các mặt hàng trong ứng dụng

Chủ đề này mô tả cách phát hiện và phân phối các sản phẩm trong ứng dụng trong trò chơi của bạn sau khi người chơi mua những mặt hàng đó bằng Điểm Play trên ứng dụng Google Play.

Sau khi người dùng đổi Điểm Play của mình cho một sản phẩm trong ứng dụng trên ứng dụng Google Play, mặt hàng đó phải được phân phối tức thì trong trò chơi. Phần sau đây hiển thị cách người dùng mua mặt hàng bằng Điểm Play.

1. Nhấp vào Điểm Play. 2. Chọn mặt hàng rồi nhấp vào thẻ Sử dụng. 3. Nhận mặt hàng.
Ảnh chụp màn hình của TBD Ảnh chụp màn hình của TBD Ảnh chụp màn hình của TBD

Trong ví dụ này, trò chơi sẽ không chạy khi người dùng đang mua sản phẩm. Người dùng cũng có thể đổi Điểm Play cho các sản phẩm khi chưa cài đặt trò chơi trên thiết bị. Bởi vậy, bạn phải thiết kế trò chơi để phân phối mặt hàng trong ứng dụng từ ngoài cửa hàng trong trò chơi.

Trước khi bạn bắt đầu

Trước khi phát hiện và phân phối một sản phẩm trong ứng dụng, bạn phải tạo sản phẩm và Chương trình khuyến mãi Play Points.

Yêu cầu về phân phối

Khi phân phối mặt hàng trong ứng dụng trong trò chơi của mình bằng Chương trình khuyến mãi Play Points, bạn phải tuân thủ các yêu cầu trong phần này.

Xác định thời điểm phân phối

Khi người chơi đổi Điểm Play cho một sản phẩm trong ứng dụng, bạn phải phân phối sản phẩm đó tức thì mà không yêu cầu người chơi khởi động lại trò chơi đó. Trong trường hợp cần hoàn thành nội dung trò chơi trước, chẳng hạn như hoàn thành phần hướng dẫn, bạn cần phân phối mặt hàng ngay sau đó.

Thông báo phân phối

Sau khi người dùng mua một sản phẩm trong ứng dụng bên ngoài trò chơi và quay lại trò chơi, bạn phải hiển thị thông báo xác nhận rằng sản phẩm đã được cấp quyền thành công trong trò chơi. Thông báo sẽ hiển thị trong một cửa sổ bật lên hoặc là một thông báo trong trò chơi. Người dùng không cần thực hiện thêm bất kỳ bước nào để nhận sản phẩm.

Thông báo phải có định dạng như sau:

  • Một thông báo rõ ràng cho biết người dùng đã nhận được mặt hàng.

  • Nhắc đến tên mặt hàng một cách rõ ràng và nhắc đến "Điểm Play" để đảm bảo rằng người dùng phân biệt được nội dung này với nội dung khác mà họ nhận được.

  • Tên mặt hàng cũng phải bao gồm mệnh giá chính xác của mặt hàng đó nếu có nhiều mặt hàng tương tự với nhiều mệnh giá.

  • Cửa sổ bật lên, thông báo hoặc thông báo trong trò chơi phải hiển thị với người dùng cho đến khi người dùng nhấp vào nút xác nhận, chẳng hạn như Tiếp tục hoặc OK. Bạn không nên dùng nút huỷ vì thông báo này chỉ nhằm cho người dùng biết về mặt hàng mà họ đã nhận được trong trò chơi. Nếu không có nút xác nhận thì thông báo cần phải hiển thị với người dùng người trong tối thiểu 3 giây trước khi biến mất để đảm bảo người dùng biết họ đã nhận được mặt hàng.

Dưới đây là một ví dụ về thông báo:

"Đã nhận mặt hàng! Bạn vừa nhận được 100 viên ngọc bằng Điểm Play. Tiếp tục."

Người dùng cần nhìn thấy một ảnh động hoặc hình ảnh xác nhận rằng số dư tiền của họ trong trò chơi đã tăng lên. Nếu mặt hàng trong ứng dụng là một mặt hàng lâu bền hoặc tiêu hao, thì người dùng phải được chuyển hướng đến nơi mặt hàng đã được mở khoá hoặc sẵn có trong trò chơi.

Phát hiện mặt hàng nhận được bên ngoài trò chơi

Nếu trò chơi của bạn sử dụng Thư viện Google Play Billing, hãy thực hiện những thay đổi sau để phát hiện các sản phẩm trong ứng dụng nhận được bên ngoài trò chơi.

  1. Trong lệnh gọi lại onResume() của trò chơi, hãy gọi phương thức queryPurchases() để truy xuất danh sách các mặt hàng, từ đó bạn có thể xác định mặt hàng nào chưa được xác nhận.

  2. Nếu trò chơi có máy chủ, bạn nên xác minh giao dịch mua hàng từ máy chủ bằng cách sử dụng Subscriptions and In-App Purchases API.

  3. Nếu có mặt hàng được sở hữu nhưng chưa được xác nhận, hãy xác nhận giao dịch mua hàng bằng consumeAsync() đối với mặt hàng tiêu hao hoặc acknowledgePurchase() đối với mặt hàng không tiêu hao.

  4. Cấp quyền cho mặt hàng đã mua bên trong trò chơi.

Phát hiện mặt hàng đã nhận ở chế độ chia đôi màn hình

Nếu trò chơi của bạn hỗ trợ chế độ nhiều cửa sổ, thì người dùng có thể đổi Điểm Play để nhận mặt hàng trong khi chạy cùng lúc ứng dụng Cửa hàng Play và trò chơi. Ảnh chụp màn hình này minh hoạ một ví dụ:

Ảnh chụp màn hình cho thấy nút Đổi điểm hiển thị khi trò chơi đang chạy.

Để hỗ trợ trường hợp này bằng Thư viện Google Play Billing, hãy làm như sau:

  1. Google Play gọi phương thức onPurchasesUpdated() để thông báo cho trò chơi rằng có một mặt hàng mới đang chờ xử lý.

  2. Nếu trò chơi có máy chủ, bạn nên xác minh giao dịch mua hàng từ máy chủ bằng cách sử dụng Subscriptions and In-App Purchases API.

  3. Xác nhận giao dịch mua hàng bằng consumeAsync() cho mặt hàng tiêu hao hoặc acknowledgePurchase() cho mặt hàng không tiêu hao.

  4. Cấp quyền cho mặt hàng đã mua bên trong trò chơi.

Hiển thị xác nhận phân phối

Khi đổi Điểm Play và nhận được một mặt hàng trao đổi, người dùng mong đợi trò chơi sẽ hiển thị một thông báo trong trò chơi hoặc cho họ biết theo một cách nào đó rằng trò chơi đã nhận và xử lý mặt hàng đúng cách. Dưới đây là một số tuỳ chọn xác nhận phân phối:

  • Hiển thị cửa sổ bật lên trong trò chơi.

  • Gửi tin nhắn tới hộp tin nhắn trong trò chơi và thông báo rõ ràng rằng có tin nhắn mới trong hộp tin nhắn trong trò chơi.

  • Sử dụng một thông báo trên hệ điều hành.

Trò chơi có thể ở trạng thái bất kỳ khi người dùng nhận được mặt hàng khuyến mãi, kể cả trạng thái chưa được cài đặt trên thiết bị. Bạn phải phát hiện mặt hàng khuyến mãi bất kể trò chơi đang ở trạng thái nào khi người dùng nhận được mặt hàng. Tuy nhiên, có một số trường hợp ngoại lệ mà không cần thông báo ngay cho người dùng rằng họ đã nhận được mặt hàng. Ví dụ:

  • Khi hành động trong trò chơi đang diễn ra, việc hiển thị thông báo có thể khiến người dùng bị phân tâm. Trong trường hợp này, bạn phải thông báo cho người dùng sau khi hành động kết thúc.

  • Khi đoạn phim cắt cảnh đang chạy, việc hiển thị thông báo có thể khiến người dùng bị phân tâm. Trong trường hợp này, bạn phải thông báo cho người dùng sau khi đoạn phim cắt cảnh chạy hết.

  • Trong quá trình hướng dẫn ban đầu và thiết lập người dùng của trò chơi. Bạn nên thông báo cho người dùng mới về phần thưởng ngay sau khi họ mở trò chơi hoặc trong quá trình thiết lập người dùng ban đầu. Tuy nhiên, bạn có thể đợi cho đến khi cảnh chính trong trò chơi xuất hiện để thông báo cho người dùng.

Nếu ứng dụng của bạn có nhiều nhân vật hoặc tài khoản có thể sử dụng mặt hàng đó, bạn nên nhắc người dùng chọn tài khoản nhận mặt hàng khuyến mãi.

Hãy lưu tâm tới người dùng khi quyết định thời điểm và cách thức thông báo cho họ về các mặt hàng khuyến mãi. Mỗi khi không nhận được thông báo tức thì, người dùng có thể băn khoăn, dừng chơi, liên hệ với bộ phận hỗ trợ người dùng hoặc phàn nàn về điều này trên mạng xã hội.

Thông tin cập nhật cho một số công cụ phát triển trò chơi

Dưới đây là một số yếu tố mà bạn nên cân nhắc cho một số công cụ phát triển trò chơi:

  • Nếu xây dựng trò chơi bằng Unity, bạn nên xác minh xem hoạt động triển khai IAP mình đang sử dụng có hỗ trợ các chương trình khuyến mãi Play Points hay không.

  • Nếu xây dựng trò chơi bằng Cocos2d-x hoặc Unreal Engine (C/C++), thì khả năng cao là bạn cần phải viết mã JNI mà sẽ gọi các Java API từ mã C/C++.

Các phương pháp hay nhất phía máy chủ

Phần này chứa các phương pháp hay nhất phía máy chủ để sử dụng cho Chương trình khuyến mãi Play Points:

  • Nếu bạn gọi Purchases.products: get trên máy chủ của mình, hãy xác minh xem bạn có cần xử lý riêng các mặt hàng trao đổi phần thưởng của Play và các sản phẩm khác trong ứng dụng dựa trên các giá trị productId hay không.

  • Nếu bạn sử dụng Inappproducts: list trên máy chủ, hãy xác minh xem bạn có cần tách các mặt hàng trao đổi phần thưởng của Play khỏi các sản phẩm khác trong ứng dụng bằng các giá trị productId hay không.

  • Xem các phương pháp hay nhất sau đây để xác minh xem bạn có cần thực hiện thêm các thay đổi hay không:

Khắc phục sự cố

Phần này chứa nội dung đề xuất dành cho các trường hợp mà khách hàng có thể thắc mắc.

Nhiều tài khoản người dùng

Nếu người dùng có nhiều Tài khoản Google trên thiết bị và đổi Điểm Play trên tài khoản không đúng, thì Google sẽ không thể chuyển mặt hàng sang tài khoản khác. Tương tự như vậy, ứng dụng của bạn không thể chuyển mặt hàng bằng cách gọi phương thức getPurchases(). Trong trường hợp này, hãy cân nhắc việc cung cấp các mặt hàng trong ứng dụng cho người dùng theo cách thủ công, thông qua các nghiệp vụ hỗ trợ khách hàng.

Mặt hàng bị trễ hoặc bị thiếu

Nếu người chơi gặp phải tình trạng mặt hàng bị trễ hoặc bị thiếu, hãy xem hướng dẫn khắc phục sự cố đối với giao dịch mua hàng trong ứng dụng trong tài liệu trợ giúp của Google Play.