storebound/templates/declarations.md
CRT 1fc94da443 CLI: store readiness, release management, export compliance, ASO audit, release notes, privacy manifest scan
- validate: read-only App Store Connect + Play report with ordered blockers (exit 1)
- apple release --phased on|pause|resume|complete and --manual-release (asks first)
- apple status --wait-review (exit 0 approved, 1 rejected, 7 timeout), apple next-build, apple encryption
- play rollout --fraction|--halt|--resume|--complete, play next-version-code
- check --aso, whats-new --since <tag>, privacy-manifest --ios <path>, version
- Apple IAP description limit is 45 characters (App Store Connect Help), not 55
- config: apple.usesNonExemptEncryption, apple.screenshotTypes, ads.appAdsTxt
2026-10-10 21:02:55 +08:00

67 lines
3.6 KiB
Markdown

# Example Game · store declarations (answers to copy into the consoles)
Answers for a typical single-player free-to-play game with ads (mediation) and in-app purchases, no accounts, no chat,
no user-generated content, general audience 13+. Change what does not match your game. Everything marked **UI** has no
API: Play Console > your app > Policy and programs > **App content** (or Dashboard > "Set up your app"), and App Store
Connect for Apple. Data safety (Play) has an API: `storebound play data-safety`.
## Google Play · App content (UI)
| declaration | answer |
|---|---|
| Privacy policy | your policy URL (same one in the listing and inside the app) |
| App access | All functionality is available without special access (no login) |
| Ads | Yes, my app contains ads |
| Content rating | IARC questionnaire, below |
| Target audience and content | 13-15, 16-17, 18 and over; "Could your app unintentionally appeal to children?" No (only if true) |
| News app | No |
| COVID-19 contact tracing / status | No |
| Data safety | `storebound play data-safety` (then check the summary in the Console) |
| Government apps | No |
| Financial features | My app doesn't provide any financial features |
| Health apps | No health features |
| Advertising ID | Yes, uses it; purposes: Advertising or marketing, Analytics, Fraud prevention / security / compliance |
| Sign-in details (App access) | No sign-in needed |
| Store settings | App category Game > (Casual, Puzzle, Arcade ...); tags; contact email + website (website serves app-ads.txt) |
Families / Designed for Families: only if you really target children; it changes the ad SDK setup (certified networks,
no ad id). If you leave children out, the policy and the ad mediation must say "not directed at children" too.
## IARC content rating (Play UI; Apple has its own form, `storebound apple appinfo`)
Category: Game. Typical answers for a non-violent casual game:
| topic | answer |
|---|---|
| Violence (realistic / cartoon / fantasy) | No |
| Blood / gore | No |
| Fear / horror | No |
| Sexuality / nudity | No |
| Language (profanity, crude humour) | No |
| Controlled substances | No |
| Gambling: simulated / real money | No / No |
| Random paid items (loot boxes) | No (fixed contents only; answer Yes if a paid item has random contents) |
| Users interact or exchange content | No (no chat; OS share sheet does not count) |
| Shares location with other users | No |
| Digital purchases | Yes (in-app purchases) |
| Unrestricted internet / browser | No |
Expected: PEGI 3, ESRB Everyone, USK 0, IARC 3+. Apple age rating 4+ (all content questions None; ads are declared as
"advertising: true", which does not change 4+).
## App Store (UI-only parts)
- App record: App Store Connect > Apps > + > New App (platform, name, primary language, bundle id, SKU). No API.
- App Privacy: `app-privacy.md`, then **Publish**.
- Export compliance (export-compliance skill): `ITSAppUsesNonExemptEncryption = NO` in Info.plist only if true (HTTPS / OS encryption only) so
every build skips the question.
- First in-app purchases: from the IAP page "Add for Review" into the draft submission with the version (see the
store-iap-setup skill).
- Guideline 5.1.1: the privacy policy link must also be reachable **inside the app** (Settings > Privacy).
## Ads
- app-ads.txt at the root of the developer website named in both listings (`https://example.com/app-ads.txt`),
with the mediation's DIRECT line plus each network's lines.
- iOS: SKAdNetwork ids of every network in Info.plist, ATT prompt before the ad SDK starts.
- EU / EEA / UK / CH: consent (CMP) or non-personalized ads.