--- 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//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:///app-ads.txt`): `OWNERDOMAIN=`, 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.