TapMind SDK Documentation logo

Troubleshooting

Shared troubleshooting for all TapMind SDK integrations.

Most integration issues trace back to one of four values not matching exactly: adapter class name, placementName, the Unity LevelPlay network key, or eCPM/rate. Adapter class names and the network key live in the Class & Network Key Registry; your placementName and eCPM/rate come directly from your account manager. Check these before diving into logs.

Common issues

These apply to every mediation partner. Partner-specific problems are in Mediation-specific issues below.

SymptomLikely causeFix
No TapMind ad in production, but works in debugWrong/missing class string, or release-build strippingVerify the class string matches the Registry exactly; TapMind AARs ship consumer ProGuard rules automatically (see Release vs debug)
No fill at allplacementName mismatch (case/space) or wrong eCPM positionRe-check placementName exactly against the TapMind Dashboard Placement Name; confirm your waterfall position
App crashes on launchMissing AdMob / Ad Manager app ID in the manifest (Android) or Info.plist (iOS)Add your app ID to native config - see App crashes on launch

App crashes on launch

The Google Mobile Ads (GMA) SDK reads your app ID from native config at process startup - before your own code runs. If the app ID is missing or malformed, initialization throws and the app crashes on launch. The crash looks like an ad problem but happens before any ad is requested, so check your native config, not your ad-loading code. This applies to both AdMob and Google Ad Manager (same GMA SDK).

Android - add inside the application element in AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>

iOS - add to Info.plist:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

Common mistakes

  • App ID vs ad unit ID. The value here is your app ID (contains a tilde: ca-app-pub-…~…), not an ad unit ID (contains a slash: ca-app-pub-…/…). The ad unit ID here still crashes.
  • Sample ID left in. The ca-app-pub-3940256099942544~… values in examples are Google's test IDs. Replace with your real app ID before release.
  • Wrapper frameworks still need this. On Flutter, React Native, Unity, and Cocos the plugin does not inject the app ID for you - you must still edit the native AndroidManifest.xml and Info.plist (or the Unity/Cocos equivalent). This is the most common wrapper-integration crash.

Use the exact snippet for your platform shown above.

Mediation-specific issues

The problems below are specific to how each mediation platform is configured. Find your partner.

AdMob (custom event)

SymptomLikely causeFix
TapMind never competes in the mediation groupCustom event not added to the group, or the group doesn't target this ad unit / format / platformIn Mediation → your group, confirm the custom event is added and the group targets the correct ad format, platform (Android/iOS), and ad units
Ad source configured but never fillsClass or placementName parameter wrong, or eCPM too low to win the waterfallVerify the Class and the placementName JSON exactly; raise the manual eCPM to test whether it's a waterfall-position issue
iOS custom event never loads (Android works)Android class string used on the iOS custom eventUse the iOS class (TapMindMediationAdapterAdmob, no package prefix) from the Registry
SymptomLikely causeFix
TapMind not selectable as a yield partnerTapMind company not created, or Mediation not toggled on for the companyAdmin → Companies → TapMind: confirm type is Ad Network and Mediation is toggled on
Yield partner active but no deliveryYield group inventory type not Mobile, partner status not Active, or group not targeting the ad unitsConfirm the yield group targets the right ad units, inventory type is Mobile, and partner Status = Active
Wrong class on wrapper vs nativeWrappers use the AdMob class for GAM; native uses the dedicated GAM classNative: …TapMindGamAdapter. Flutter/RN/Unity/Cocos: use the AdMob class per the Registry

Verify: GAM dashboard changes can take time to propagate before delivery begins - confirm the expected delay with your account manager before assuming a misconfiguration.

AppLovin MAX (custom network)

SymptomLikely causeFix
TapMind never appears in MAXCustom Network created but not enabled on the ad unitMAX → Mediation → Ad Units → your unit → enable TapMind
"Adapter not found" / no fillWrong Android or iOS Class in the Custom Network, or network type not set to SDKVerify both the Android Class and iOS Class exactly; Network type must be SDK
Can't tell whether the adapter loadedn/aRun the MAX Mediation Debugger in a debug build to confirm the TapMind adapter loads and view its status

Verify: confirm the MAX Mediation Debugger surfaces custom-network adapters as described in your setup.

Unity LevelPlay (network key)

SymptomLikely causeFix
TapMind network never appearsWrong network key, or "Custom Adapter" not selectedAdd via SDK Networks → Custom Adapter → enter the LevelPlay network key from the Registry
Network appears but no fillNo instance created, or the instance rate is too low for its waterfall orderSetup → Instances → add a TapMind instance per ad format; set the eCPM/Rate
Looking for a class string and can't find oneLevelPlay uses a network key, not a class stringUse the network key from the Registry; there is no class string for LevelPlay

Release vs debug

If ads work in debug but not in release, suspect the class string or R8/ProGuard stripping adapter classes in release builds.

ProGuard / R8 keep rules (Android)

Each shipped TapMind adapter AAR includes populated consumer ProGuard rules (consumer-rules.pro), packaged as consumer rules inside the artifact. These are applied automatically when you integrate the published Maven packages - you do not need to copy manual keep rules for normal integration.

Consumer rules cover both the standard adapter namespace (com.tapmind.tech.*) and the GMA Next-Gen namespace (com.tapmind.mediation.ng.*).

If you still see release-only failures after confirming class strings, contact your account manager with release logcat output.

Release build QA: There is currently no documented release-safe test path to validate R8/ProGuard without serving live ads (test mode is build-type driven: debug = test, release = live).

Escalation

Contact your account manager with:

  • The mediation platform and framework
  • The adapter class name and placementName you are using
  • For Orchestration: error code and message from OrchError

Integration pages include partner-specific verification steps under Verify integration on each mediation page.