feat(ads): add vanilla-ad-tracker-sample#3263
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3263 +/- ##
=======================================
Coverage 79.38% 79.38%
=======================================
Files 357 357
Lines 14347 14347
Branches 1959 1959
=======================================
Hits 11389 11389
Misses 2154 2154
Partials 804 804 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
|
|
||
| override fun onAdFailedToShowFullScreenContent(error: AdError) { | ||
| status = "Not Loaded" | ||
| } |
There was a problem hiding this comment.
Ad reference not cleared on show failure
Medium Severity
In all four fullscreen ad types, onAdFailedToShowFullScreenContent sets status to "Not Loaded" but does not null out the ad reference (e.g., interstitialAd, appOpenAd, rewardedAd, rewardedInterstitialAd). The "Show" button's enabled state is driven by the ad reference being non-null, so it stays enabled after a show failure even though the ad is consumed and unusable. Tapping "Show" again would silently fail. The onAdDismissedFullScreenContent handler correctly nulls the reference — the same pattern is needed here. Particularly important since this is a reference sample for developers.
Additional Locations (2)
**This is an automatic release.** ## RevenueCat SDK ### 🐞 Bugfixes * [EXTERNAL] fix: ensure activity is attached before showing in-app messages (#3274) contributed by @matteinn (#3275) via Toni Rico (@tonidero) * Ensure MediaPlayer has dedicated thread owner that is not the main thread (#3148) via Jacob Rakidzich (@JZDesign) * Fix heartbeat monitor and Slack notifications for nightly integration tests (#3259) via Rick (@rickvdl) ## RevenueCatUI SDK ### Paywallv2 #### ✨ New Features * Feat: Restore gating in paywalls UI (#3171) via Jacob Rakidzich (@JZDesign) ### 🔄 Other Changes * security: pin GitHub Actions to SHA hashes (#3272) via Alfonso Embid-Desmet (@alfondotnet) * Bump activesupport from 8.0.2 to 8.0.4.1 (#3270) via dependabot[bot] (@dependabot[bot]) * Merge release PR after deploy (#3269) via Antonio Pallares (@ajpallares) * Require PR approval before release tagging (#3268) via Antonio Pallares (@ajpallares) * Bump json from 2.18.1 to 2.19.2 (#3261) via dependabot[bot] (@dependabot[bot]) * feat(ads): update admob sample app (#3264) via Peter Porfy (@peterporfy) * feat(ads): add vanilla-ad-tracker-sample (#3263) via Peter Porfy (@peterporfy) * [Purchase Tester]: Persist appUserId on login screen across app launches (#3266) via Will Taylor (@fire-at-will) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Mostly release automation and versioning changes, but it modifies CI/orb references and deploy/merge automation, which could affect the release pipeline if misconfigured. > > **Overview** > Cuts the `9.28.0` release by removing `-SNAPSHOT` across version sources (`.version`, `gradle.properties`, `Config.frameworkVersion`) and updating sample/test-app dependency pins to `9.28.0`. > > Updates release documentation: publishes Dokka docs to the `9.28.0` S3 path, updates `docs/index.html` redirect to `9.28.0`, and rolls `CHANGELOG.latest.md` into a new `9.28.0` section in `CHANGELOG.md`. > > Tweaks release tooling/CI: pins `fastlane-plugin-revenuecat_internal` to a specific git ref (and bumps a few Ruby deps), switches the CircleCI `revenuecat/sdks-common-config` orb to a dev commit, and adds a temporary `test_merge_queue` workflow to exercise `revenuecat/merge-release-pr` with `use_merge_queue: true`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5050888. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->


Adds a new
examples/vanilla-ad-tracker-sampleapp demonstrating how to integrate RevenueCat ad tracking with AdMob without thefeature:admobadapter — callingAdTrackerAPIs directly in AdMob callbacks. Intended as a reference for developers using other ad networks or who want explicit control over tracking. Based on existingadmob-sampleand thepurchases-iossample.Note
Low Risk
Adds a new example app and documentation only; no changes to the core SDK or production code paths.
Overview
Adds a new
examples/vanilla-ad-tracker-sampleAndroid app that demonstrates manual RevenueCatAdTrackerevent reporting from AdMob callbacks (without using the:feature:admobadapter), covering banner/interstitial/app-open/rewarded/rewarded-interstitial/native/native-video plus an error-trigger screen.The sample includes a small Compose UI to select formats and load/show ads, AdMob + RevenueCat initialization, a precision mapping helper, native ad layout resources, and a README with setup instructions and guidance on using
responseInfo.responseIdas the impression ID. The module is wired into the build viasettings.gradle.kts.Written by Cursor Bugbot for commit 740f93c. This will update automatically on new commits. Configure here.