Guideline 5.6: paywall khiến app bị Apple từ chối
Bởi Mehdi Azizi
Đăng ngày , 9 phút
Guideline 5.6: Apple từ chối paywall gài bẫy, như nút X lại mở ưu đãi hay ưu đãi tự bật lại. Quy định nói gì và cách mình sửa lần bị từ chối của TradaZen.
Guideline 5.6 là bộ quy tắc ứng xử của nhà phát triển. Với paywall, Apple thường trích nó kèm một câu mẫu: app “attempts to manipulate customers into making unwanted In-App Purchases”. Nói đơn giản, một nút trong luồng mua hàng của bạn không làm đúng điều nó thể hiện, hoặc một ưu đãi tự hiện lại dù người dùng không yêu cầu. Cách sửa gói gọn trong một quy tắc: mỗi nút làm đúng điều nó nói, và chỉ người dùng mới quyết định khi nào họ xem lại một ưu đãi.
Mình đã dính lần từ chối này với TradaZen, app luyện tập trading của mình, mà mình kể lại quá trình ra mắt trong case study này. Dưới đây là quy định, những gì mình tìm thấy trong paywall của mình, các mẫu cần tránh và câu trả lời của mình gửi Apple. Nếu bạn cần quy định gần đó về việc xin đánh giá, hãy đọc hướng dẫn về guideline 5.6.3.
Guideline 5.6 nói gì?
Mục 5.6, “Developer Code of Conduct”, nằm trong phần 5 “Legal” của App Review Guidelines. Đoạn đầu nói về sự tôn trọng: với khách hàng, khi trả lời đánh giá và khi trao đổi với Apple. Đoạn thứ hai nhắm thẳng vào việc mua hàng.
Văn bản hiện hành đặt ra nguyên tắc: “Customer trust is a cornerstone of the App ecosystem.” Sau đó nó liệt kê những gì app không bao giờ được làm: lợi dụng người dùng, lừa đảo họ, “trick them into making unwanted purchases”, ép họ chia sẻ dữ liệu không cần thiết, “raise prices in a tricky manner”, thu tiền cho thứ không được cung cấp, hay bất kỳ hành vi thao túng nào khác, trong app hay bên ngoài.
Nói gọn: bạn không được có được một giao dịch mua bằng mánh khóe. Văn bản không đưa ra danh sách các nút bị cấm. Nó đánh giá hiệu quả: người dùng trả tiền vì họ muốn, hay vì màn hình đã gài bẫy họ?
Mục 5.6 còn gồm bốn quy định con:
| Quy định con | Nhắm vào |
|---|---|
| 5.6.1 App Store Reviews | Đánh giá và xin chấm điểm |
| 5.6.2 Developer Identity | Thông tin chính xác về bạn |
| 5.6.3 Discovery Fraud | Gian lận để tăng hiển thị |
| 5.6.4 App Quality | Khiếu nại, hoàn tiền |
Hình phạt được ghi ngay trong quy định: “Repeated manipulative or misleading behavior or other fraudulent conduct will lead to your removal from the Apple Developer Program.” Vậy hành vi thao túng lặp lại sẽ dẫn đến việc bị loại khỏi chương trình nhà phát triển. Đây là quy định chung, và là lý do chính đáng để sửa toàn bộ luồng mua hàng ngay từ lần bị từ chối đầu tiên.
Thông báo từ chối 5.6 cho paywall
Thông báo thường lặp lại cùng một câu: “The app attempts to manipulate customers into making unwanted In-App Purchases.” Apple không phải lúc nào cũng nói rõ thành phần nào bị nhắm tới. Với lần từ chối của mình, không có gì thêm.
Một số nhà phát triển khác mô tả màn hình có vấn đề. Trong một chủ đề trên diễn đàn Apple tháng 11/2024, một nhà phát triển liên hệ lần từ chối 5.6 của mình với một ưu đãi “một lần duy nhất”, hiện ra khi người dùng đóng màn hình đăng ký đầu tiên.
Mục 5.6 không chỉ nhắm vào paywall. Một nhà phát triển khác cũng bị từ chối vì các tính năng có vẻ bị ẩn đi trong lúc review. Nếu lần từ chối 5.6 của bạn không nhắc đến mua hàng, hãy tìm trước những gì người review không thể nhìn thấy.
Lần bị từ chối 5.6 của mình với TradaZen
Ngày 12/10/2026, Apple từ chối phiên bản 1.5.1 của TradaZen, được test trên iPad Air. Lý do: guideline 5.6, kèm câu mẫu về các giao dịch mua không mong muốn. Không màn hình nào được nêu tên.
Vậy là mình đọc lại toàn bộ luồng mua hàng với góc nhìn của một người chỉ muốn từ chối. Paywall cuối onboarding không có nút đóng: app yêu cầu dùng thử hoặc đăng ký để tiếp tục. Ba cơ chế xung quanh nó có thể bị xem là thao túng:
- Một nút X giả. Ở đầu màn hình, một nút hình chữ X, được VoiceOver đọc là “Đóng”, lại mở một ưu đãi giảm giá thay vì đóng màn hình.
- Một ưu đãi tự quay lại. Khi ưu đãi còn hiệu lực, nó tự mở lại mỗi lần người dùng quay lại app.
- Một thông báo khuyến mãi nhắc lại. Thoát app từ paywall sẽ lên lịch một thông báo quảng cáo mức giảm giá độc quyền.
Có một chi tiết quan trọng: các cơ chế này đã có sẵn trong phiên bản trước, được duyệt ba ngày trước đó. Một lần được duyệt không có nghĩa paywall của bạn hợp lệ mãi mãi: một người review khác có thể đọc cùng màn hình theo cách khác.
Những gì mình đã thay đổi
- Nút X đã biến mất khỏi màn hình này. Thay vào đó, một biểu tượng quà tặng, được VoiceOver đọc là “Giảm giá độc quyền”, mở ưu đãi khi chạm vào. Không còn thứ gì giả vờ là nút đóng.
- Ưu đãi không bao giờ tự mở lại khi quay lại app nữa.
- Thông báo giảm giá đã bị xóa. Chỉ còn một lời nhắc nhẹ nhàng, gửi đúng một lần cho mỗi lượt cài đặt và chỉ khi thông báo được cho phép. Nó không nhắc đến giá, giảm giá hay thời hạn.
- Lời nhắc này được mô tả trong tin nhắn gửi App Review, kèm nội dung và thời điểm gửi.
Những gì mình giữ lại
Mình cũng đọc lại những gì còn lại, tự hỏi liệu từng thành phần có thực sự để người dùng tự chọn hay không.
- Một ưu đãi sau khi hủy mua. Nếu người dùng hủy bảng thanh toán của Apple cho gói năm, một ưu đãi chào mừng sẽ mở ra. Nó chỉ có một khung thời gian duy nhất 5 phút, không khởi động lại: nếu người dùng lại hủy trong khoảng thời gian đó, nó sẽ mở lại. Có thể đóng nó bằng một thao tác qua nút X hoặc “Không, cảm ơn”, và nó hiển thị đúng giá thật của sản phẩm.
- Một bộ đếm giờ thật 5 phút. Thời điểm hết hạn được lưu trên thiết bị ngay lần hiển thị đầu tiên. Nó vẫn chạy khi app đóng và không quay về 0 khi mở lại. Khi hết giờ, ưu đãi biến mất với lượt cài đặt app đó. Nếu đóng trước, một huy hiệu nhỏ hiển thị thời gian còn lại và chỉ mở lại ưu đãi nếu bạn chạm vào.
- Một chiếc rương bị khóa. Nó hiển thị các vật phẩm kiếm được trong onboarding, và chỉ những vật phẩm đó, bị khóa cho đến khi app được mở khóa. Không có gì thông báo rằng chúng sẽ bị mất.
Những thành phần này có trong ghi chú review. Lần từ chối không nêu màn hình nào, nên mình không coi chúng là đã được Apple xác nhận. Theo mình, đây là phiên bản minh bạch của các cơ chế đó, và mình đã khai báo chúng.
Bản sửa cần một build mới, vì mọi thứ đều nằm trong app. TradaZen được gửi review lại ngày 13/10/2026.
Các dark pattern trong paywall khiến dính 5.6
Apple không công bố danh sách nào. Cùng một cơ chế thường có hai phiên bản: phiên bản gài bẫy và phiên bản để người dùng tự chọn. Bảng này tách chúng ra, dựa trên văn bản quy định, các lần từ chối mà nhà phát triển khác đã công khai và lần của mình. Phiên bản minh bạch không đảm bảo được duyệt. Nó là phiên bản không tìm cách đánh lừa. Cột cuối cho biết mỗi dòng dựa trên cơ sở nào.
| Phiên bản thao túng | Phiên bản minh bạch | Cơ sở |
|---|---|---|
| Nút X mở ưu đãi thay vì đóng | Nút X thì đóng. Màn hình không đóng được thì không hiển thị nút X | Đã sửa sau lần TradaZen bị từ chối |
| Một ưu đãi “duy nhất” bật ra khi đóng paywall | Giảm giá nằm sau một nút ghi rõ điều đó | Lần từ chối công khai trên diễn đàn Apple |
| Ưu đãi thứ hai bật ra sau khi từ chối, trong paywall có giá gây hiểu lầm | Chỉ một ưu đãi sau khi hủy mua, đúng giá thật, đóng được bằng một thao tác | Vụ Cal AI; trao đổi do Superwall kể lại |
| Paywall hoặc ưu đãi tự mở lại khi quay lại app | Nó chỉ quay lại khi người dùng chạm giới hạn hoặc một nút ghi rõ điều đó | Đã sửa sau lần TradaZen bị từ chối |
| Thông báo khuyến mãi người dùng chưa từng yêu cầu | Khuyến mãi sau khi có đồng ý rõ ràng, có cách hủy đăng ký trong app | Quy định 4.5.4 |
| Bộ đếm giờ giả, quay về 0 hoặc ưu đãi quay lại sau khi hết giờ | Thời hạn thật, vẫn chạy khi app đóng và thực sự kết thúc | Cách mình hiểu “trick them”, quy định 5.6 |
| Phần thưởng bịa ra, hoặc bị dọa sẽ mất nếu không mua | Thành quả thật của người dùng, hiển thị mà không dọa sẽ mất | Cách mình hiểu quy định 5.6 |
| Dùng thử miễn phí nhưng giấu việc tự động trừ tiền | Thời gian dùng thử và giá bị tính sau đó, đặt cạnh nút | Trang đăng ký của Apple |
| Giá theo tuần in to, số tiền thực bị tính in nhỏ | Số tiền bị tính là mức giá nổi bật nhất trên màn hình | Trang đăng ký của Apple |
| Nút từ chối khiến người dùng thấy có lỗi | Lời từ chối trung tính, như “Để sau” hoặc “Không, cảm ơn” | Cách mình hiểu quy định 5.6 |
Vụ Cal AI được TechCrunch đưa tin: Apple đã trích mục 5.6 vì một ưu đãi đăng ký thứ hai hiện cho những ai từ chối ưu đãi đầu tiên. Cùng paywall đó còn bị nêu theo mục 3.1.2(c): giá theo tuần lấn át số tiền thực bị tính, và phần dùng thử che giấu việc tự động gia hạn. Bài báo không mô tả chi tiết hơn về ưu đãi thứ hai.
Ngược lại, Superwall, một công ty làm công cụ paywall có bán loại ưu đãi này, kể lại một cuộc trao đổi không chính thức với Apple vào tháng 6/2026. Ở đó, một ưu đãi hiện sau khi hủy mua được mô tả là được phép. Còn sự dai dẳng thì không: một ưu đãi quay lại mỗi phiên, hay một luồng mà chỉ thoát ra được bằng cách trả tiền. Superwall nói rõ đây không phải quy định chính thức và người review vẫn giữ quyền đánh giá. Vì vậy, ưu đãi sau khi bị từ chối vẫn là vùng xám: văn bản không cấm, đã có những lần từ chối được công khai, và cách làm mới là điều quan trọng.
Quy định về thông báo là mục 4.5.4: không quảng cáo qua thông báo nếu chưa có sự đồng ý rõ ràng được thu thập trong app, và phải có cách hủy đăng ký.
Về giá, trang của Apple về gói đăng ký nói rất rõ: số tiền bị tính phải là thành phần giá nổi bật nhất. Lý do gói trong một câu: “This ensures that people are not misled.” Quy định 3.1.2 còn nói thêm rằng Apple gỡ những app bán gói đăng ký theo cách gây hiểu lầm hoặc kiểu “bait-and-switch”.
Bài test mình áp dụng bây giờ: mỗi nút có làm đúng điều mà vẻ ngoài của nó hứa hẹn không, và người dùng có thể nói không bằng một thao tác, mà ưu đãi không tự quay lại không?
Những lỗi paywall phổ biến hơn, loại làm mất doanh thu mà chưa chắc khiến bị từ chối, có trong bài paywall iOS: 7 lỗi của người mới.
Cách sửa khi bị từ chối 5.6
- Liệt kê toàn bộ luồng mua hàng. Paywall, ưu đãi phụ, bộ đếm giờ, thông báo, các lần nhắc lại khi quay lại app. Apple không phải lúc nào cũng nói họ nhắm vào đâu. Với từng thành phần, kiểm tra xem nó có ở phiên bản minh bạch không: đóng được bằng một thao tác, bộ đếm giờ thật, giá chính xác, không tự quay lại. Sửa hoặc gỡ mọi thứ trông giống bẫy, không chỉ thành phần có khả năng nhất.
- Chạy lại hành trình của người review. Xóa app, cài lại, hoàn tất onboarding, rồi từ chối mọi thứ: đóng, hủy, thoát app, quay lại. Ghi lại từng màn hình tự mở ra mà bạn không yêu cầu, và kiểm tra bạn có thể đóng nó bằng một thao tác.
- Chuẩn bị build mới. Nguyên nhân nằm trong app, tức là trong code đi kèm. Cập nhật từ xa không thay thế được build, như mình giải thích trong hướng dẫn về guideline 2.1.
- Đừng giấu gì để dành. Bật lại một ưu đãi từ xa sau khi được duyệt chẳng khác nào giấu tính năng khỏi người review. Chính RevenueCat cũng cảnh báo phản xạ này trong bài viết về ưu đãi khi thoát.
- Trả lời trong App Store Connect, bằng tiếng Anh, bằng cách trả lời tin nhắn của App Review.
Đây là một khung mẫu rút từ câu trả lời và ghi chú review của mình, đã rút gọn. Thay số build và các thay đổi bằng của bạn, rồi liệt kê những gì còn lại:
Hello,
Thank you for your feedback on Guideline 5.6.
Issue: on the subscription screen, the button in the top
corner looked like a close button, but it opened a
discounted offer instead of closing the screen.
Changes in build X:
- Nothing on the subscription screen pretends to close it.
A clearly labeled button now opens the optional offer.
- The offer never reopens by itself when the user comes
back to the app.
- The notification announcing a discount has been removed.
Still in this build (also described in the review notes):
- [Each remaining offer: what triggers it, how often it
appears, how the user dismisses it.]
- [Each remaining reminder: its text, when it is sent,
and under which conditions.]
If another part of the purchase flow still looks unclear,
please tell me which screen, and I will change it.
Best regards,
Những gì bạn viết phải khớp chính xác với build. Nếu bạn giữ lại một lời nhắc hay một ưu đãi, kể cả loại tự kích hoạt, hãy mô tả chúng trong câu trả lời và trong ghi chú review. Nếu bạn nghĩ người review đã nhầm, Apple cho phép kháng nghị lên App Review Board, mỗi bản gửi bị từ chối chỉ được kháng nghị một lần. Với paywall, mình thấy sửa an toàn hơn là tranh cãi. Các lý do từ chối khác và cách phản hồi có trong bài vì sao Apple từ chối app.
Checklist chống 5.6 trước khi gửi
- Mọi nút X đều đóng màn hình. Màn hình không đóng được thì không hiển thị nút X.
- Mỗi nút nói rõ nó làm gì, trên màn hình lẫn với VoiceOver.
- Không ưu đãi nào nấp sau một nút đóng.
- Nếu bạn giữ một ưu đãi kích hoạt bởi lời từ chối, nó chỉ nằm trong một khung thời gian duy nhất không khởi động lại, đúng giá thật, và đóng được bằng một thao tác.
- Không paywall hay ưu đãi nào tự mở lại khi quay lại app.
- Không thông báo khuyến mãi nào khi chưa có đồng ý rõ ràng trong app.
- Không có bộ đếm giờ giả: thời hạn hiển thị là thật, không quay về 0 và thực sự kết thúc.
- Những gì màn hình hiển thị là đã kiếm được thì thực sự đã kiếm được, không dọa sẽ mất.
- Phần dùng thử hiển thị thời gian và giá bị tính sau đó.
- Số tiền bị tính là mức giá nổi bật nhất trên màn hình.
- Ghi chú review mô tả mọi ưu đãi và mọi lời nhắc có trong build.
- Bạn đã chạy lại hành trình bằng cách từ chối mọi thứ, trên iPhone và iPad.
Nhờ xem lại paywall trước khi gửi Apple
Review Kit gồm checklist trước khi gửi của mình, các lần bị từ chối mình đã sửa và hai skill Claude Code đọc lại dự án, paywall và trang sản phẩm của bạn. Nếu Apple từ chối, chúng sẽ soạn sẵn câu trả lời cho bạn. Nếu muốn một góc nhìn của người thật, đặt một giờ với mình: chúng ta cùng chạy lại luồng mua hàng của bạn, ngay trên màn hình của bạn. Toàn bộ quy trình sau khi bị từ chối có ở trang app bị Apple từ chối, còn phần kỹ thuật về gói đăng ký có ở gói đăng ký in-app iOS.
Nếu bạn đang chuẩn bị ra mắt lần đầu, làm bài chẩn đoán miễn phí: nó sắp xếp lại các bước theo đúng thứ tự và gửi bạn checklist chống bị Apple từ chối của mình. Trang chủ hướng dẫn cách tạo một ứng dụng di động với paywall được thiết kế để qua review ngay từ đầu.
Không ai có thể đảm bảo Apple sẽ duyệt app của bạn. Điều mình có thể làm là giúp bạn tránh một lần bị từ chối 5.6 mà mình đã phải trả giá bằng một vòng review.
Câu hỏi thường gặp
“Guideline 5.6 - Developer Code of Conduct” trong thông báo từ chối có nghĩa là gì?
Đó là tên của quy định về bộ quy tắc ứng xử của nhà phát triển. Với app có mua hàng trong app, nó thường báo hiệu một luồng mua hàng bị đánh giá là thao túng: nút đóng giả, ưu đãi tự quay lại, dùng thử hoặc giá trình bày gây hiểu lầm. Thông báo không phải lúc nào cũng nêu rõ màn hình bị nhắm tới.
Apple có cấm ưu đãi khi thoát không?
Văn bản không cấm một cách rõ ràng. RevenueCat cũng ghi nhận điều đó, đồng thời lưu ý rằng đã có nhà phát triển bị từ chối vì lý do này. Các lần từ chối được công khai nhắm vào ưu đãi bật ra khi người dùng đóng paywall, hoặc ưu đãi thứ hai bật ra sau khi từ chối. Điều làm nên phiên bản minh bạch: một ưu đãi tùy chọn, giới hạn trong một khung thời gian duy nhất không khởi động lại, đúng giá thật, đóng được bằng một thao tác, không tự quay lại, và có bộ đếm giờ thật nếu có. Hãy mô tả nó trong ghi chú review. Không ai đảm bảo được người review sẽ hiểu nó như vậy.
Paywall không có nút X có được phép không?
Quy định không bắt buộc phải có nút X, và đó là lựa chọn của TradaZen sau lần bị từ chối này. Điều Apple từ chối là một nút trông giống nút đóng nhưng lại làm việc khác. Tuy vậy, một nhà phát triển đã kể về một lần bị từ chối 5.6 vì paywall không có lối thoát trong một app tải miễn phí. Hãy cho thấy giá trị trước khi yêu cầu dùng thử, và nói rõ trên trang sản phẩm rằng app có tính phí.
Có cần build mới sau khi bị từ chối 5.6 không?
Có, trong hầu hết trường hợp, vì nguyên nhân là một màn hình hoặc một hành vi của app. Nếu vấn đề nằm ngoài app, trong trang sản phẩm hay metadata, sửa mà không cần build có thể là đủ. Nếu không chắc, hãy hỏi người review họ nhắm vào màn hình nào.
Bị từ chối 5.6 có thể dẫn đến việc đóng tài khoản nhà phát triển không?
Quy định có nêu điều này khi hành vi thao túng lặp lại, kèm việc bị loại khỏi chương trình nhà phát triển. Nó cũng nêu rằng tài khoản bị đóng có thể được khôi phục sau một kế hoạch cải thiện bằng văn bản, được Apple phê duyệt rồi kiểm tra. Vì vậy nên sửa toàn bộ luồng mua hàng ngay từ lần bị từ chối đầu tiên.
5.6 và 5.6.3 khác nhau thế nào?
5.6 là bộ quy tắc ứng xử chung: tôn trọng, tin cậy, không có giao dịch mua nào bằng mánh khóe. 5.6.3 là một trong các quy định con của nó, về thao túng bảng xếp hạng, tìm kiếm và đánh giá. Apple đã trích nó với Solys vì một yêu cầu chấm điểm đặt trong onboarding.

