storebound/skills/ads-levelplay-checks/SKILL.md

3.2 KiB

name description
ads-levelplay-checks 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.