Nếu ứng dụng iOS của bạn dành cho trẻ em, bạn phải tuân theo chính sách của Apple. Nếu đang sử dụng Adapty SDK, chỉ cần vài bước đơn giản là bạn có thể cấu hình SDK để đáp ứng các chính sách này và vượt qua quá trình xét duyệt của App Store.
Địa chỉ IP
Ngoài ra, chúng tôi khuyến nghị sử dụng customer user ID một cách cẩn thận. User ID có định dạng <FirstName.LastName> chắc chắn sẽ bị coi là thu thập dữ liệu cá nhân, tương tự như việc sử dụng email. Đối với Kids Mode, phương pháp tốt nhất là sử dụng các định danh ngẫu nhiên hoặc ẩn danh (ví dụ: ID đã được hash hoặc UUID do thiết bị tạo ra) để đảm bảo tuân thủ quy định.
Bật Chế Độ Trẻ Em
Cập nhật trong Adapty Dashboard
Trong Adapty Dashboard, bạn cần tắt tính năng thu thập địa chỉ IP. Để thực hiện, hãy vào App settings và nhấn Disable IP address collection bên dưới mục Collect users’ IP address.
Cập nhật trong code ứng dụng của bạn
Bắt đầu từ SDK 4.0, Kids Mode là một Swift package trait có tên KidsMode. Khi bật trait này, IDFA và AdSupport sẽ được loại bỏ hoàn toàn khỏi SDK trong quá trình biên dịch — bạn vẫn giữ nguyên các module Adapty và AdaptyUI cùng với các câu lệnh import Adapty / import AdaptyUI thông thường.
Trait KidsMode có sẵn từ SDK phiên bản 4.0. Bắt đầu từ SDK 4.0, SDK chỉ được cài đặt qua Swift Package Manager — CocoaPods không còn được hỗ trợ nữa.
Trong Xcode 26.4 trở lên, mở cài đặt dự án, vào phần Package Dependencies, và bật trait KidsMode cho dependency AdaptySDK-iOS.
Các phiên bản Xcode trước 26.4 không thể bật trait cho dự án Xcode từ giao diện UI. Trong trường hợp đó, hãy thêm một Swift package cục bộ nhỏ phụ thuộc vào Adapty với trait KidsMode được bật (xem tab Package.swift), rồi cho app target của bạn phụ thuộc vào package đó.
Nếu bạn thêm Adapty làm dependency trong Package.swift, hãy bật trait trong phần khai báo package. Trait yêu cầu swift-tools-version 6.1 trở lên.
Nếu ứng dụng iOS của bạn dành cho trẻ em, bạn phải tuân thủ các chính sách của Apple. Nếu đang sử dụng Adapty SDK, một vài bước đơn giản sau đây sẽ giúp bạn cấu hình SDK để đáp ứng các chính sách đó và vượt qua quá trình kiểm duyệt của cửa hàng.
Địa chỉ IP
Ngoài ra, chúng tôi khuyến nghị sử dụng customer user ID một cách thận trọng. User ID có định dạng <FirstName.LastName> chắc chắn sẽ bị xem là thu thập dữ liệu cá nhân, tương tự như việc sử dụng email. Đối với Kids Mode, cách thực hành tốt nhất là sử dụng các định danh ngẫu nhiên hoặc ẩn danh (ví dụ: ID đã được hash hoặc UUID do thiết bị tạo ra) để đảm bảo tuân thủ quy định.
Bật Chế Độ Kids
Cập nhật trong Adapty Dashboard
Trong Adapty Dashboard, bạn cần tắt tính năng thu thập địa chỉ IP. Để thực hiện, hãy vào App settings và nhấn Disable IP address collection trong phần Collect users’ IP address.
Cập nhật trong code ứng dụng di động của bạn
Để tuân thủ các chính sách, hãy tắt tính năng thu thập IDFA và địa chỉ IP của người dùng.
Nếu bạn dùng Swift Package Manager, có thể bật Kids Mode bằng cách chọn module Adapty_KidsMode trong Xcode khi cài đặt SDK.
Trong Xcode, vào File -> Add Package Dependency…. Lưu ý rằng các bước thêm package dependency có thể khác nhau tùy phiên bản Xcode, vì vậy hãy tham khảo tài liệu của Xcode nếu cần.
Nhập URL của repository:
https://github.com/adaptyteam/AdaptySDK-iOS.git
Chọn phiên bản (khuyến nghị dùng phiên bản ổn định mới nhất) và nhấn Add Package.
Trong cửa sổ Choose Package Products, chọn các module bạn cần:
Adapty_KidsMode (module cốt lõi)
AdaptyUI_KidsMode (tùy chọn - chỉ cần nếu bạn dự định dùng Paywall Builder)
Bạn sẽ không cần bất kỳ package nào khác.
Nhấn Add Package để hoàn tất cài đặt.
Trong code của bạn, hãy viết import Adapty_KidsMode thay vì import Adapty, và import AdaptyUI_KidsMode thay vì import AdaptyUI:
Cập nhật Podfile của bạn:
Nếu bạn chưa có phần post_install, hãy thêm toàn bộ đoạn code bên dưới.
Nếu bạn đã có phần post_install, hãy merge các dòng được highlight vào đó.
def adapty_enable_kids_mode(installer) installer.pods_project.targets.each do |target| next unless target.name == 'Adapty' target.build_configurations.each do |config| flags = config.build_settings['OTHER_SWIFT_FLAGS'] || '$(inherited)' flags = flags.join(' ') if flags.is_a?(Array) config.build_settings['OTHER_SWIFT_FLAGS'] = "#{flags} -DADAPTY_KIDS_MODE" end target.frameworks_build_phase.files.dup.each do |bf| target.frameworks_build_phase.remove_build_file(bf) if bf.display_name.to_s.include?('AdSupport') end end installer.pods_project.save Dir.glob(File.join(installer.sandbox.root, 'Target Support Files', '**', '*.xcconfig')).each do |xc| File.write(xc, File.read(xc).gsub(/\s*-framework\s+"?AdSupport"?/, '')) endendpost_install do |installer| # ... keep your existing post_install body (Flutter adds one automatically) ... adapty_enable_kids_mode(installer) # <-- enable Adapty Kids Modeend