crt-ship 0.1.0: CLI, Claude Code skills and templates for shipping mobile games to Google Play and the App Store
This commit is contained in:
commit
3cd31b7601
64 changed files with 4509 additions and 0 deletions
39
skills/ads-levelplay-checks/SKILL.md
Normal file
39
skills/ads-levelplay-checks/SKILL.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
name: ads-levelplay-checks
|
||||
description: Diagnose and verify ad mediation (Unity LevelPlay / ironSource and its networks like Unity Ads, InMobi, Liftoff, AdMob) in a mobile game before and after store release - app keys, game ids, adapter versions, integration validation, "Invalid Game ID", "Mediation No fill" 509, app-ads.txt, SKAdNetwork ids, ATT, COPPA setting. Use when ads do not load, a network reports invalid/unknown ids, or the user prepares ads for launch.
|
||||
---
|
||||
|
||||
# Ad mediation checks (LevelPlay)
|
||||
|
||||
No CLI needed; these are checks to run and read. Ask the owner before changing dashboard settings.
|
||||
|
||||
## Checklist
|
||||
1. **Ids per platform.** LevelPlay app key + ad unit ids for iOS and Android are different; ship production ids only
|
||||
in release builds and use the public demo app keys from Unity's Mediation demo apps during development so real units
|
||||
never see test traffic.
|
||||
2. **Integration.** After init call the SDK's `validateIntegration()`; the device log (Xcode console, Android logcat
|
||||
tag `IntegrationHelper`) must list every network as "Adapter - Version x - VERIFIED". Adapter + network SDK versions
|
||||
must be a pair from Unity's adapter tables / CHANGELOGs.
|
||||
3. **Unity Ads "Invalid Game ID" / iOS "Initialization failed: not found".** Often account-side, not code: compare
|
||||
`https://publisher-config.unityads.unity3d.com/games/<gameId>/configuration` for your id with Unity's demo id
|
||||
`14851` (which answers with a config). If yours 404s or is empty, the Unity Ads project / game id is not set up or not
|
||||
linked to the LevelPlay app: fix it in the Unity dashboard (Monetization > Projects > the game ids, and the LevelPlay
|
||||
network setup using exactly those ids).
|
||||
4. **509 "Mediation No fill"** before launch is normal: the LevelPlay app is not live / not linked to store URLs. After
|
||||
both listings are public, set the store URLs in the LevelPlay dashboard.
|
||||
5. **app-ads.txt** on the root of the developer website named in both listings (`https://<domain>/app-ads.txt`):
|
||||
`OWNERDOMAIN=<domain>`, the LevelPlay DIRECT line with your publisher id, and each network's lines (Unity's
|
||||
"App-Ads.txt" doc page lists them). Re-sync now and then. The listing website must match the domain exactly.
|
||||
6. **iOS**: SKAdNetwork ids of every network in Info.plist (refresh from each network's official list when adding one),
|
||||
`NSUserTrackingUsageDescription`, ATT prompt before the ad SDK starts, `-ObjC` linker flag if the SDK requires it.
|
||||
7. **Android**: `AD_ID` permission (declared in Play's advertising ID form), network SDKs listed explicitly when the
|
||||
adapter artifacts declare no dependencies.
|
||||
8. **Privacy**: COPPA "not directed at children" unless the app is for kids; EU / UK / CH consent (CMP) or
|
||||
non-personalized ads; Data safety + App Privacy list the ad data as shared / tracking (`store-declarations`).
|
||||
9. **Placement sanity**: no ads in the first sessions / levels, never mid-round, rewarded always optional; reviewers
|
||||
test the first minutes.
|
||||
|
||||
## Gotchas
|
||||
- Adding Google AdMob needs its app id first: the adapter crashes at launch without the manifest / Info.plist id.
|
||||
- Test ads on real units can get the account flagged: use demo ids or registered test devices.
|
||||
- A network failing to init does not break mediation; the others still fill once the app is live.
|
||||
Loading…
Add table
Add a link
Reference in a new issue