---
title: "Danh sách kiểm tra trước khi phát hành"
description: "Làm theo danh sách kiểm tra của Adapty để đảm bảo quá trình cập nhật ứng dụng diễn ra suôn sẻ."
---

Chúng tôi rất vui khi bạn quyết định sử dụng Adapty! Hy vọng quá trình tích hợp diễn ra suôn sẻ. Hướng dẫn này sẽ đưa bạn qua các bước để đảm bảo ứng dụng sẵn sàng phát hành lên cửa hàng, và bạn có thể yên tâm rằng flow thanh toán hoạt động đúng.

## Các yêu cầu cần có trước \{#pre-flight-essentials\}

Những gì bạn cần trước khi bắt đầu kiểm tra:

- Thiết bị thật với tài khoản sandbox

- Quyền truy cập vào Adapty Dashboard

- Quyền truy cập vào App Store Connect / Google Play Console

:::note
Mặc dù có thể thực hiện mua hàng sandbox trên máy ảo, nhưng bạn cần thiết bị thật để kiểm tra đầy đủ tất cả các flow, bao gồm cả hộp thoại thanh toán và xác thực sinh trắc học.
:::

<Button id="test-purchases-in-sandbox">
    Hướng dẫn kiểm tra cho App Store
</Button>

<Button id="testing-on-android">
    Hướng dẫn kiểm tra cho Google Play
</Button>

## Kiểm tra chung \{#universal-validations\}

- [ ] **Kết nối cửa hàng**: Đảm bảo bạn đã kết nối Adapty với App Store và/hoặc Google Play:
    - [ ] [App Store](initial_ios)
    - [ ] [Google Play](initial-android)
- [ ] **Gửi sự kiện gói đăng ký**: Xác nhận rằng thông báo từ máy chủ đã được thiết lập:
    - [ ] [Thông báo máy chủ App Store](enable-app-store-server-notifications)
    - [ ] [Thông báo nhà phát triển theo thời gian thực (RTDN)](enable-real-time-developer-notifications-rtdn)
- [ ] **Nhận diện hồ sơ người dùng**: Kiểm tra logic nhận diện người dùng và đảm bảo các giao dịch mua được gắn đúng hồ sơ người dùng:
    - [ ] [Kiểm tra logic nhận diện trong code ứng dụng của bạn có khớp với trường hợp sử dụng không](ios-quickstart-identify)
    - [ ] [Đảm bảo bạn hiểu logic cha/kế thừa khi chia sẻ quyền truy cập trả phí giữa các hồ sơ người dùng](sharing-paid-access-between-user-accounts)
- [ ] **Ưu đãi**: Nếu ứng dụng có ưu đãi cho App Store, hãy đảm bảo bạn đã [thêm In-app purchase key](app-store-connection-configuration#step-4-for-trials-and-special-offers--set-up-promotional-offers) vào cả trường chính lẫn phần **App Store promotional offers**.
- [ ] **Thu thập dữ liệu**: Đảm bảo tuân thủ quyền riêng tư:
    - [ ] Nếu bạn cần tuân thủ các quy định về quyền riêng tư như GDPR hoặc CCPA, hoặc ứng dụng dành cho trẻ em, hãy kiểm soát việc [bật IDFA và thu thập/chia sẻ IP](sdk-installation-ios#data-policies).
    - [ ] Nếu ứng dụng sử dụng AppTrackingTransparency, hãy đảm bảo bạn đang [gửi trạng thái ủy quyền cho Adapty](ios-deal-with-att).
- [ ] **Nhãn quyền riêng tư**: [Tìm hiểu thêm](apple-app-privacy) về dữ liệu Adapty thu thập và các flag bạn cần thiết lập để kiểm duyệt.

## Kiểm tra giao dịch mua \{#purchase-validations\}

---
no_index: true
---
import Callout from '../../../components/Callout.astro';

<Callout type="tip">
Bạn có câu hỏi hoặc gặp sự cố? Hãy xem [diễn đàn hỗ trợ](https://adapty.featurebase.app/) của chúng tôi — nơi bạn có thể tìm câu trả lời cho các câu hỏi thường gặp hoặc đặt câu hỏi của riêng mình. Đội ngũ và cộng đồng của chúng tôi luôn sẵn sàng giúp đỡ!
</Callout>

Trước khi ra mắt, hãy đảm bảo rằng các giao dịch mua trong ứng dụng hoạt động chính xác và paywall của bạn sẵn sàng để kiểm duyệt cửa hàng.

Cách kiểm tra in-app purchase phụ thuộc vào cách bạn triển khai:

- Bạn hiển thị paywall được tạo trong Adapty Paywall Builder
- Bạn đã tự triển khai paywall và sử dụng phương thức `makePurchase` bên trong để xử lý giao dịch
- Bạn sử dụng Adapty ở chế độ observer (với Adapty Paywall Builder hoặc paywall tùy chỉnh của bạn)

<Tabs groupId="paywall" queryString>
<TabItem value="builder" label="Adapty Paywall Builder" default>

**Mục tiêu**: Adapty render paywall, người dùng có thể mua sản phẩm, quyền truy cập được mở khóa và flow khôi phục hoạt động đúng.

- [ ] Ứng dụng của bạn [hiển thị paywall](ios-present-paywalls) từ đúng placement bạn sẽ phát hành.
    - [ ] Paywall hiển thị trên màn hình. Nếu tải mất quá nhiều thời gian (ví dụ: khi bạn hoặc người dùng gặp kết nối internet không ổn định), hãy cân nhắc [điều chỉnh fetch policy](get-pb-paywalls#fetch-paywall-designed-with-paywall-builder).
    - [ ] Paywall hiển thị đúng biến thể (đối tượng/ngôn ngữ nếu có). Bạn có thể [thay đổi mức độ ưu tiên đối tượng](change-audience-priority) nếu cần.
- [ ] Sản phẩm và giá hiển thị trên paywall. Lưu ý rằng API của Apple đôi khi có thể cung cấp giá không chính xác trong quá trình kiểm tra (đặc biệt với các cấu hình khu vực khác nhau), vì vậy hãy ưu tiên kiểm tra chức năng flow mua hàng hơn là độ chính xác của giá vì Adapty không ảnh hưởng đến giá của cửa hàng.
- [ ] Giao dịch mua sandbox hoàn tất thành công. Callback mua hàng thành công được nhận.
- [ ] Quyền truy cập được mở khóa và duy trì. Xác nhận rằng [quyền truy cập trả phí được cấp dựa trên hồ sơ người dùng Adapty hiện tại](ios-check-subscription-status#connect-profile-with-paywall-logic).
    - [ ] Sau khi mua, hồ sơ người dùng Adapty có mức độ truy cập đang hoạt động.
    - [ ] Các tính năng trả phí được mở khóa khi hồ sơ người dùng chứa mức độ truy cập đó (không chỉ dựa vào callback mua hàng).
- [ ] Khôi phục giao dịch hoạt động. Khi bạn cài đặt lại ứng dụng hoặc cài đặt trên thiết bị mới, tính năng khôi phục giao dịch tự động hoạt động theo cài đặt [Chia sẻ quyền truy cập trả phí](sharing-paid-access-between-user-accounts). Nếu bạn không có xác thực backend, giao dịch sẽ được khôi phục tự động bất kể cài đặt. Trong các trường hợp khác, hãy đảm bảo người dùng có thể khôi phục giao dịch sau khi cài đặt lại ứng dụng.
- [ ] Yêu cầu kiểm duyệt cửa hàng:
    - [ ] Nút **Restore purchases** có trên paywall. Bạn có thể thêm nút này trong paywall builder, và nó sẽ tự động xử lý việc khôi phục giao dịch khi được nhấn.
    - [ ] Điều khoản sử dụng + Chính sách bảo mật có thể truy cập từ màn hình paywall, và nhấp vào các liên kết này sẽ mở chúng trong trình duyệt.

</TabItem>
<TabItem value="makepurchase" label="Custom paywall (makePurchase)" default>

**Mục tiêu**: Bạn render giao diện; Adapty xử lý giao dịch, cập nhật hồ sơ người dùng và khôi phục.

- [ ] ID sản phẩm không được hardcode trong code ứng dụng. Bạn chỉ hardcode ID [placement](placements).
- [ ] Ứng dụng của bạn [lấy sản phẩm](fetch-paywalls-and-products) từ đúng placement bạn sẽ phát hành.
    - [ ] Danh sách sản phẩm tải thành công. Nếu tải mất quá nhiều thời gian (ví dụ: khi bạn hoặc người dùng gặp kết nối internet không ổn định), hãy cân nhắc [điều chỉnh fetch policy](fetch-paywalls-and-products#fetch-paywall-information).
    - [ ] Các sản phẩm được lấy về khớp với biến thể mong đợi (đối tượng/ngôn ngữ nếu có). Bạn có thể [thay đổi mức độ ưu tiên đối tượng](change-audience-priority) nếu cần.
- [ ] Sản phẩm và giá hiển thị trên paywall. Lưu ý rằng API của Apple đôi khi có thể cung cấp giá không chính xác trong quá trình kiểm tra (đặc biệt với các cấu hình khu vực khác nhau), vì vậy hãy ưu tiên kiểm tra chức năng flow mua hàng hơn là độ chính xác của giá vì Adapty không ảnh hưởng đến giá của cửa hàng.
- [ ] Giao dịch mua sandbox với [makePurchase](making-purchases) hoàn tất thành công:
    - [ ] Kết quả mua hàng thành công được xử lý.
    - [ ] Các kết quả đang chờ/thất bại/đã hủy được xử lý một cách hợp lý.
- [ ] Nếu bạn [sử dụng Remote Config](present-remote-config-paywalls), các giá trị của nó được lấy đúng cho paywall của bạn.
- [ ] Khi paywall được hiển thị, phương thức [`logShowFlow` (iOS SDK v4+) / `logShowPaywall`](present-remote-config-paywalls#track-paywall-view-events) được gọi.
- [ ] Giao dịch mua sandbox hoàn tất thành công. Callback mua hàng thành công được nhận.
- [ ] Quyền truy cập được mở khóa và duy trì. Xác nhận rằng [quyền truy cập trả phí được cấp dựa trên hồ sơ người dùng Adapty hiện tại](ios-check-subscription-status#connect-profile-with-paywall-logic).
    - [ ] Sau khi mua, hồ sơ người dùng Adapty có mức độ truy cập đang hoạt động.
    - [ ] Các tính năng trả phí được mở khóa khi hồ sơ người dùng chứa mức độ truy cập đó (không chỉ dựa vào callback mua hàng).
- [ ] Khôi phục giao dịch hoạt động. Khi bạn cài đặt lại ứng dụng hoặc cài đặt trên thiết bị mới, tính năng khôi phục giao dịch tự động hoạt động theo cài đặt [Chia sẻ quyền truy cập trả phí](sharing-paid-access-between-user-accounts). Nếu bạn không có xác thực backend, giao dịch sẽ được khôi phục tự động bất kể cài đặt. Trong các trường hợp khác, hãy đảm bảo người dùng có thể khôi phục giao dịch sau khi cài đặt lại ứng dụng.
- [ ] Yêu cầu kiểm duyệt cửa hàng:
    - [ ] Nút **Restore purchases** có thể truy cập và [xử lý việc khôi phục](restore-purchase).
    - [ ] Điều khoản sử dụng + Chính sách bảo mật có thể truy cập từ màn hình paywall, và nhấp vào các liên kết này sẽ mở chúng trong trình duyệt.

</TabItem>
<TabItem value="observer" label="Observer mode">

**Mục tiêu**: Bạn tự xử lý giao dịch, cập nhật hồ sơ người dùng và khôi phục; Adapty nhận báo cáo giao dịch.

- [ ] **Ứng dụng của bạn hoàn tất giao dịch bằng flow mua hàng của riêng mình** (StoreKit / BillingClient / backend):
    - [ ] Giao dịch mua sandbox thành công trong giao diện cửa hàng.
    - [ ] Các kết quả đang chờ/thất bại/đã hủy được xử lý hợp lý trong ứng dụng.
- [ ] **Giao dịch được báo cáo cho Adapty**.
    - [ ] Chế độ observer được [bật trong code ứng dụng](implement-observer-mode).
    - [ ] Giao dịch mua hiển thị trong Event Feed của Adapty.
    - [ ] Gia hạn, hủy và hoàn tiền được phản ánh theo thời gian (khi áp dụng).
- [ ] **Lượt xem paywall được theo dõi**. Phương thức [`logShowFlow` (iOS SDK v4+) / `logShowPaywall`](present-remote-config-paywalls#track-paywall-view-events) được gọi khi paywall được hiển thị.
- [ ] **Khôi phục giao dịch hoạt động cho triển khai của bạn**. Cài đặt lại ứng dụng hoặc chuyển sang thiết bị khác sẽ khôi phục quyền truy cập đúng cách.
- [ ] **Yêu cầu kiểm duyệt cửa hàng**:
    - [ ] Hành động **Restore purchases** có thể truy cập và kích hoạt flow khôi phục của bạn.
    - [ ] Điều khoản sử dụng + Chính sách bảo mật có thể truy cập từ màn hình paywall hoặc mua hàng và mở trong trình duyệt.
</TabItem>

</Tabs>

Nếu bạn có bất kỳ câu hỏi nào về việc tích hợp Adapty SDK, hãy sử dụng chatbot AI ở góc dưới bên phải hoặc liên hệ với chúng tôi tại [support@adapty.io](mailto:support@adapty.io).