Step 7
AdMob + shipping
30 min
AdMob + shipping
Monetisation + store submission. More process than engineering at this stage.
1. AdMob basics
- Register an app on Google AdMob, get unit IDs
- Banner, interstitial, rewarded types
- Test ad IDs during dev, real IDs only on release
2. AdMob in Tauri 2 Android
No official Tauri plugin yet, so write a thin native plugin or bridge via postMessage.
Typical route:
- Add Google Play services ads to
src-tauri/gen/android/app/build.gradle.kts MobileAds.initialize()+ a banner view in Kotlin- Expose Tauri commands
show_banner/hide_banner - Call
invoke("show_banner")from React
If that's too much, a WebView adsbygoogle.js path is possible with caveats.
3. Privacy policy
Google Play requires it.
- Link from an in-app Settings menu
- Host publicly (Notion · GitHub Pages · your site)
- Declare what you collect, why, whether shared, retention
With AdMob you must disclose advertising IDs and device info.
4. Store assets
- 2–8 localized screenshots
- Icon 512x512 PNG
- Feature graphic 1024x500 PNG
- Short (80 char) + full (4000 char) descriptions
- Data safety questionnaire
5. Common rejection reasons
- Permission rationale unclear
- Broken privacy policy link
- Screenshots include competitors' branding
com.exampleidentifier still present
Fix identifier to com.yourdomain.appname and rebuild.
6. Release checklist
- Identifier final (you cannot change it)
- Signing key safely backed up
- Privacy policy URL
- Real AdMob IDs
-
minSdkVersion ≥ 24· currenttargetSdkVersion - 64-bit (aarch64)
- Screenshots, icon, description
- Data safety answered
- Prefer App Bundle (AAB) format
7. Staged rollout
Internal test → Closed test (100) → Open test → Production
Each stage 1–3 days. Crashes surface early.
8. Updates
- Build with the same key + bump
versionCode(integer, monotonic) tauri.conf.jsonversionand AndroidversionCodeare separate numbers
9. Gotchas
- Lost signing key → new app listing only
- AdMob policy violations (self-clicks, forced clicks) → account bans
minSdkVersiontoo low → policy rejection- Competitor trademark in description → rejection
Closing
Most of the bottleneck is policy and docs, not engineering. Treat the first app as "2–3 rejections are normal"; stress drops.
Next
- agent-tooling/06-claude-code-skills
- frontend/11-sqlite-local
🎉 You finished Tauri 2 — desktop · mobile in one codebase
What's next? Pick another course below.