Chuyển đến nội dung
AppFoyer
Bắt đầu

Hướng dẫn Trước khi gửi duyệt

Dùng coding agent để viết các trang tuân thủ

Những dữ kiện các trang này cần đã có sẵn trong repository của bạn. Một agent thực sự suy ra được gì, phải hỏi bạn điều gì, và những giới hạn nên đòi hỏi trước khi cho nó động vào việc này.

Một coding agent đọc được repository của bạn đã có sẵn những dữ kiện các trang này cần: tên ứng dụng, bundle id, liên kết cửa hàng và mọi SDK trong bản build. Với công cụ phù hợp, nó soạn các trang từ những bằng chứng đó và đưa bạn một liên kết xem lại — bạn kiểm tra và xuất bản.

1:10
Video 1:10 · mở trên YouTube

Làm việc này trong vài phút thay vì thế

AppFoyer lưu trữ các trang mà hướng dẫn này nói đến — chính sách quyền riêng tư, điều khoản, hỗ trợ, xóa tài khoản và app-ads.txt — trên subdomain riêng của ứng dụng, không cần tên miền hay máy chủ của riêng bạn. Một ứng dụng được miễn phí, và không có gì cửa hàng yêu cầu lại bị đặt sau tường phí.

Đã kiểm tra ngày 25 tháng 9, 2026. Chính sách của cửa hàng thay đổi, đôi khi không báo trước. Mọi thứ dưới đây đều dẫn liên kết đến tài liệu chính thức, và trang đó — không phải trang này — mới là căn cứ. Nếu hai bên mâu thuẫn, cửa hàng là đúng. Hướng dẫn này được dịch từ tiếng Anh; các trích dẫn từ tài liệu của cửa hàng được giữ nguyên bản tiếng Anh.

Viết chính sách quyền riêng tư phần lớn là chép lại. Phần khó — xác định ứng dụng thực sự thu thập gì — đã có câu trả lời trong các tệp nằm sẵn trong repository, và đó chính xác là loại việc mà một agent có quyền truy cập hệ thống tệp làm tốt.

Những gì agent thực sự suy ra được

Chỉ từ các tệp build, không cần hỏi bạn gì:

Dữ kiệnLấy từ đâu
Tên ứng dụngstrings.xml app_name, CFBundleDisplayName, pubspec.yaml, app.json
Application id / bundle idapplicationId trong Gradle, PRODUCT_BUNDLE_IDENTIFIER trong dự án Xcode
Nền tảngNhững tệp nào trong số đó tồn tại
Thu thập dữ liệuMọi SDK bên thứ ba trong build.gradle, Podfile, Package.swift, pubspec.yaml, package.json
Quyền và chuỗi mô tả mục đích sử dụngAndroidManifest.xml, Info.plist
Ad publisher idAdMob application id trong manifest hoặc plist
URL Play đề xuấtDựng từ application id — một đề xuất, không phải dữ kiện, vì ứng dụng có thể chưa được đăng

Bảng đó là nội dung cốt lõi của một chính sách quyền riêng tư. Nó cũng là câu trả lời cho “ứng dụng của tôi thu thập gì”, câu hỏi mà phần lớn nhà phát triển trả lời sai khi dựa vào trí nhớ và trả lời đúng khi đọc tệp.

Những gì nó không thể biết và phải hỏi

Một agent tự bịa ra những điều này còn tệ hơn không có agent:

  • Tên pháp nhân của bạn và khu vực pháp lý mà điều khoản của bạn nêu.
  • Địa chỉ hỗ trợ mà bạn thực sự đọc. Nó tuyệt đối không được đoán điều này từ git config hay từ tài khoản Apple developer tìm thấy trong một tệp fastlane.
  • App Store id thật của bạn, trừ khi nó nằm trong cấu hình fastlane — id dạng số không suy ra được.
  • Ứng dụng đã phát hành chưa, và dưới trang thông tin nào trên cửa hàng.
  • Các dữ kiện kinh doanh: bạn có bán gói thuê bao không, trẻ em có phải đối tượng mục tiêu không, bạn có chia sẻ dữ liệu với một đối tác không để lại dấu vết nào trong danh sách phụ thuộc không.
  • Bất cứ điều gì về backend của bạn. Không có gì trong repository cho biết bạn giữ dữ liệu bao lâu.

Một kết quả tốt trông như sau: mọi thứ suy ra được đều được suy ra kèm tệp và dòng nguồn gốc, và phần còn lại là một danh sách ngắn các câu hỏi chỉ bạn mới trả lời được.

Những giới hạn nên đòi hỏi

Trước khi cho bất kỳ agent nào động vào việc này, hãy quyết định những điều sau — chúng tạo nên khác biệt giữa một công cụ hữu ích và một rủi ro:

  1. Không có gì được xuất bản nếu không có cú nhấp của con người. Một trang pháp lý được tạo tự động lên mạng mà không được xem lại — đó là toàn bộ rủi ro trong một câu.
  2. Mọi dữ kiện suy ra đều truy được nguồn. “Tôi tìm thấy firebase-crashlytics tại app/build.gradle:47” kiểm tra được; “ứng dụng của bạn thu thập dữ liệu chẩn đoán” thì không.
  3. Nó không commit hay push. Đề xuất một diff là giúp đỡ; viết lại repo của bạn thì không.
  4. Nó gửi tối thiểu ra khỏi máy của bạn. Suy ra dữ kiện tại máy và gửi đi kết luận rất khác với tải mã nguồn của bạn lên.
  5. Nó nói ra điều nó không biết. Một agent điền vào chỗ giữ chỗ bằng một câu nghe hợp lý là đã tạo ra một tài liệu tuân thủ chứa một phỏng đoán.

Hãy hỏi năm câu đó với bất kỳ công cụ nào thuộc loại này, kể cả của chúng tôi.

Con người vẫn nắm quyền ở đâu

Agent soạn; bạn quyết định. Cụ thể, bạn là người:

  • xác nhận những câu hỏi nó không suy ra được;
  • đọc phần bên thứ ba, là phần người xét duyệt đối chiếu với biểu mẫu Data safety của bạn;
  • quyết định thời hạn lưu giữ, vì chỉ bạn biết backend của mình;
  • nhấn xuất bản;
  • điền các trường trong console của cửa hàng — không agent nào nên ở bên trong Play Console của bạn.

Nếu ứng dụng của bạn liên quan đến tiền, dữ liệu sức khỏe hoặc trẻ em, một giờ tư vấn luật sư vẫn thuộc danh sách này. Một mẫu được soạn từ bằng chứng là điểm khởi đầu tốt hơn một trang trắng; nó không phải là tư vấn.

AppFoyer làm gì ở đây

Có một plugin cho Claude Code. Bạn cài nó, nói “make this app store-ready”, và skill sẽ đọc các tệp build, suy ra bảng ở trên kèm tệp và dòng cho từng dữ kiện, chỉ hỏi những gì nó không tìm thấy, và soạn cả năm trang cùng app-ads.txt. Sau đó nó đưa bạn một URL xem lại trong dashboard.

Các giới hạn ở trên được thực thi chứ không chỉ là lời hứa. Thông tin xác thực của agent chỉ chạm đến một tập công cụ cố định — liệt kê và đọc ứng dụng, tạo ứng dụng (mỗi flavor một ứng dụng), cập nhật cài đặt, soạn trang, app-ads.txt, checklist, biểu tượng ứng dụng và địa chỉ tùy chỉnh — và xuất bản không nằm trong số đó: request_publish cho bạn một liên kết, không phải một trang đang chạy. Biểu tượng và địa chỉ là hai thứ không có bước bản nháp, nên agent sẽ nói khi nó đã đặt chúng, và nó sẽ không thay một địa chỉ bạn đang dùng mà không hỏi. Agent không thể xuất bản, gỡ xuất bản, xóa ứng dụng, thay đổi kênh thông báo hay động vào hộp thư yêu cầu xóa của bạn; đó là những thao tác chỉ dành cho phiên đăng nhập mà bạn tự thực hiện. Danh sách công cụ đầy đủ và các ví dụ minh họa có tại trang tài liệu về agent. Skill không bao giờ commit hay push, và chỉ đề xuất diff khi bạn yêu cầu nó gắn các URL hoàn chỉnh trở lại vào ứng dụng.

Nếu agent của bạn không phải Claude Code — Cursor, Codex, hay một trợ lý chat — trang quyền riêng tư có một lối sao chép và dán thay thế: trình soạn thảo đưa bạn một prompt đã điền sẵn thông tin ứng dụng, bạn chạy nó ở bất cứ đâu và dán câu trả lời trở lại. Prompt đó và lý do nó được viết như vậy có trong Viết chính sách quyền riêng tư bằng trợ lý AI.

Nếu bạn không có agent, điều tương tự có sẵn dưới dạng một biểu mẫu ngắn. Lối agent nhanh hơn vì câu trả lời đã có sẵn trong repository — nó không phải là một sản phẩm khác.

Nguồn chính thức