admanagekit-mcp-server 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/content/README.md CHANGED
@@ -5,7 +5,9 @@
5
5
 
6
6
  AdManageKit is a comprehensive Android library designed to simplify the integration and management of Google AdMob ads, Google Play Billing, and User Messaging Platform (UMP) consent.
7
7
 
8
- **Latest Version `4.4.2`** is a bug-fix release. No API changed, but several fixes are user-visible and two affect revenue: rewarded ads could **crash the app** (every show-path callback, including `onRewardEarned`, was delivered on a background thread), a **completed purchase could fail to disable ads** until the next launch, **blank gaps** were left where banner/native slots should have collapsed for premium users and after failed loads (in both XML and Compose), and app open ads could appear over screens excluded via `disableAppOpenAdsTemporarily()`. Also fixes a `BannerAdView` leak that kept requesting ads after detach. Two deliberate behavior changes: an account-hold subscription no longer disables ads, and premium users no longer reserve ad space in Compose. See [Release Notes v4.4.2](docs/release-notes/RELEASE_NOTES_v4.4.2.md).
8
+ **Latest Version `4.4.3`** is a bug-fix and dependency release. No API changed. Two silent-failure bugs are fixed, both of which cost money: a **rewarded load the manager had given up on could sabotage the load that replaced it** discarding an ad a newer load had just delivered, and clearing the "loading" flag out from under a request still in flight and **billing could stop acknowledging purchases for the rest of the process**, which lets Play auto-refund a completed purchase on day 3. Acknowledgment also no longer requires the purchase to match a configured product id. Picks up the Next-Gen GMA SDK **1.3.1**, Yandex Mobile Ads **8.3.0**, and refreshed AndroidX/Firebase/Compose BOMs. See [Release Notes v4.4.3](docs/release-notes/RELEASE_NOTES_v4.4.3.md).
9
+
10
+ **Version `4.4.2`** is a bug-fix release. No API changed, but several fixes are user-visible and two affect revenue: rewarded ads could **crash the app** (every show-path callback, including `onRewardEarned`, was delivered on a background thread), a **completed purchase could fail to disable ads** until the next launch, **blank gaps** were left where banner/native slots should have collapsed for premium users and after failed loads (in both XML and Compose), and app open ads could appear over screens excluded via `disableAppOpenAdsTemporarily()`. Also fixes a `BannerAdView` leak that kept requesting ads after detach. Two deliberate behavior changes: an account-hold subscription no longer disables ads, and premium users no longer reserve ad space in Compose. See [Release Notes v4.4.2](docs/release-notes/RELEASE_NOTES_v4.4.2.md).
9
11
 
10
12
  **Version `4.4.1`** is a patch release that updates the Google Mobile Ads Next-Gen SDK to **1.3.0** (from 1.2.1) and repairs three documentation-delivery channels that had silently gone stale: the API docs build had failed on every release since the Dokka 2.x upgrade, leaving [the published KDoc](https://i2hammad.github.io/AdManageKit/) without any 4.x types; MCP server npm publishing had been broken since January 2026; and the MCP tool schemas hardcoded which versions and classes existed, so they rejected `4.4.0` as an unknown version. No AdManageKit API changed. See [Release Notes v4.4.1](docs/release-notes/RELEASE_NOTES_v4.4.1.md).
11
13
 
@@ -29,7 +31,7 @@ Since **4.2.0** the library runs on the Google Mobile Ads **Next-Gen SDK** (`ads
29
31
 
30
32
  ## Next-Gen GMA SDK
31
33
 
32
- As of v4.2.0, AdManageKit runs on Google's **Next-Gen Google Mobile Ads SDK** (`com.google.android.libraries.ads.mobile.sdk`, stable `1.3.0` as of 4.4.1) instead of the legacy `com.google.android.gms:play-services-ads`. This isn't a branch or an opt-in — it's the only version of AdManageKit going forward.
34
+ As of v4.2.0, AdManageKit runs on Google's **Next-Gen Google Mobile Ads SDK** (`com.google.android.libraries.ads.mobile.sdk`, stable `1.3.1` as of 4.4.3) instead of the legacy `com.google.android.gms:play-services-ads`. This isn't a branch or an opt-in — it's the only version of AdManageKit going forward.
33
35
 
34
36
  ### Why the move
35
37
 
@@ -193,15 +195,15 @@ dependencyResolutionManagement {
193
195
  **Step 2:** Add dependencies to your app's `build.gradle`:
194
196
 
195
197
  ```groovy
196
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
197
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.2'
198
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
198
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
199
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.3'
200
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
199
201
 
200
202
  // For Jetpack Compose support
201
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.2'
203
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.3'
202
204
 
203
205
  // For Yandex Ads multi-provider support
204
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.2'
206
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.3'
205
207
  ```
206
208
 
207
209
  **Step 3:** Ensure your app's `compileSdk` is **37 or higher** (required transitively as of 4.2.0).
@@ -775,6 +777,7 @@ Register it **before** `initBilling`. Products land in `unfetched` when the id i
775
777
  - [Multi-Provider Waterfall](docs/MULTI_PROVIDER_WATERFALL.md)
776
778
  - [Yandex Integration](docs/YANDEX_INTEGRATION.md)
777
779
  - [Billing Integration Guide](docs/APP_PURCHASE_GUIDE.md)
780
+ - [Release Notes v4.4.3](docs/release-notes/RELEASE_NOTES_v4.4.3.md)
778
781
  - [Release Notes v4.4.2](docs/release-notes/RELEASE_NOTES_v4.4.2.md)
779
782
  - [Release Notes v4.4.1](docs/release-notes/RELEASE_NOTES_v4.4.1.md)
780
783
  - [Release Notes v4.4.0](docs/release-notes/RELEASE_NOTES_v4.4.0.md)
@@ -128,6 +128,24 @@ PurchaseItem("premium_yearly", null, TYPE_IAP.SUBSCRIPTION)
128
128
  > call `consumePurchase(productId)` after granting items — consuming both lets
129
129
  > the item be bought again and satisfies Play's acknowledgment requirement.
130
130
 
131
+ > **Pending purchases need one thing from you.** A pending order (cash, bank
132
+ > transfer, parental approval) can complete hours or days later, while your app
133
+ > is closed. `onPurchasesUpdated` only fires if the app happens to be running,
134
+ > so Play requires apps to re-query owned purchases on every foreground.
135
+ > `AppPurchase` queries on billing init; if your process stays alive across the
136
+ > transition, that never runs again — so call `refreshPurchases()` from your
137
+ > main activity's `onResume()`:
138
+ >
139
+ > ```kotlin
140
+ > override fun onResume() {
141
+ > super.onResume()
142
+ > AppPurchase.getInstance().refreshPurchases()
143
+ > }
144
+ > ```
145
+ >
146
+ > It acknowledges every unacknowledged `PURCHASED` purchase it finds, which is
147
+ > what stops a completed pending order from being auto-cancelled on day 3.
148
+
131
149
  ### In-App Products
132
150
 
133
151
  ```kotlin
@@ -0,0 +1,121 @@
1
+ # Release Notes — v4.4.3
2
+
3
+ **Release Date:** 2026-08-15
4
+
5
+ ## Overview
6
+
7
+ v4.4.3 is a bug-fix and dependency release. No API was added, removed or changed. Two of the fixes are silent-failure bugs that cost real money:
8
+
9
+ - **A rewarded load the manager had given up on could sabotage the load that replaced it** — throwing away an ad that had just arrived, and clearing the "loading" flag out from under a request that was still running.
10
+ - **Billing could stop acknowledging purchases for the rest of the process**, which lets Play auto-refund a completed purchase on day 3.
11
+
12
+ It also picks up the Next-Gen GMA SDK **1.3.1**, Yandex Mobile Ads **8.3.0**, and refreshed AndroidX/Firebase/Compose BOMs.
13
+
14
+ Upgrading is a drop-in from 4.4.x.
15
+
16
+ ---
17
+
18
+ ## Fixed
19
+
20
+ ### A timed-out rewarded load could sabotage the one that replaced it
21
+
22
+ `RewardedAdManager.loadRewardedAdWithTimeout(...)` stops waiting for a load once its timeout elapses — but a request handed to the SDK **cannot be cancelled**, so it keeps running and reports back whenever it finishes. Its callbacks then ran the full success/failure path as though they still spoke for the manager, even though a replacement load had started in the meantime.
23
+
24
+ Concretely, a late callback from an abandoned request could:
25
+
26
+ - **Throw away a perfectly good ad.** The failure path ran `rewardedAd = null` unconditionally, so a stale failure discarded an ad a *later* load had just delivered. The next `showAd()` found nothing and skipped the reward.
27
+ - **Clear `isLoading` out from under the load that was still running**, so the manager reported itself idle while a request was in flight — letting a duplicate load start and burning an extra ad request.
28
+ - **Fail callers queued behind a load that had not finished yet**, via `notifyPendingLoadFailure`.
29
+ - **Schedule a retry for a request nobody was waiting on.**
30
+
31
+ Every load path now claims a generation token and checks it before touching anything shared — the same mechanism `RewardedWaterfall` already used internally. A stale callback answers *its own* caller (which is still owed a result and has no other source of one) and otherwise leaves shared state alone.
32
+
33
+ A late ad is **kept rather than dropped**: it is real and showable no matter which request produced it, so it is adopted for the next show whenever nothing better is already in hand. This applies to both the AdMob path and the waterfall path.
34
+
35
+ Two related unconditional writes were tightened at the same time:
36
+
37
+ - The direct load's failure path no longer does `rewardedAd = null` at all. A failed request means *this* request produced nothing — not that an ad obtained elsewhere has stopped being showable.
38
+ - The waterfall failure path now clears `rewardedWaterfall` only when the chain being reported on is still the one it installed (`if (rewardedWaterfall === waterfall)`), so a newer load's chain — or a late chain adopted in the meantime — is not discarded by an older failure.
39
+
40
+ > This is the same class of bug as the v4.4.2 `AdManager` duplicate-callback fix, in the one manager that still resolved in-flight state with plain flags.
41
+
42
+ ### Billing could stop acknowledging purchases for the rest of the process
43
+
44
+ `AppPurchase` gated every re-query on `isServiceConnected`, an `AtomicBoolean` written **only** by `onBillingSetupFinished` and cleared by `onBillingServiceDisconnected`.
45
+
46
+ The library enables `enableAutoServiceReconnection()`, and the SDK restores the connection on its own without necessarily re-firing `onBillingSetupFinished`. So after a single disconnect the flag could stay `false` permanently — while the client itself was perfectly ready — silently disabling:
47
+
48
+ - `verifyPurchased(...)` and `updatePurchaseStatus()` — entitlement re-checks
49
+ - `refreshPurchases(...)` — including **the acknowledgment retry**
50
+ - `consumePurchase(...)`, `queryProductDetails(...)`
51
+ - `connectToGooglePlayBilling()`, which skipped reconnecting because it believed it was still connected
52
+
53
+ That last one matters most: **Play auto-refunds any purchase left unacknowledged for 3 days.** A user who bought while the flag was stuck could be charged, granted the entitlement, and then silently refunded — with the app still treating them as a paying customer.
54
+
55
+ All of these now consult the client's own live state (`billingClient.isReady()`) instead of the latched flag. `onBillingServiceDisconnected` also stops clearing `isBillingAvailable`: the client *was* set up successfully, and `isAvailable()` ANDs that fact with the live readiness check, so it now reports `false` only while the service is actually down rather than latching `false` for the rest of the process.
56
+
57
+ ### Acknowledgment required the purchase to match a configured product id
58
+
59
+ In both `verifyPurchased(...)` and `updatePurchaseStatus()`, `acknowledgePurchaseIfNeeded(purchase)` was called *inside* the loop that matched the purchase against `inAppProductIdList` / `subProductIdList`. A `PURCHASED` order whose id the current build does not list was never acknowledged — and so was auto-refunded on day 3.
60
+
61
+ That is not a hypothetical set: promo-code grants, products dropped from a newer release, a Play Console id typo, and a user who purchased on a build that configured more ids than the one they are running now all land here.
62
+
63
+ Acknowledgment now happens **before** the id match, unconditionally for every `PURCHASED` purchase. Entitlement still requires a configured id — only the acknowledgment was decoupled, since the 3-day clock does not care whether your build recognises the product.
64
+
65
+ ---
66
+
67
+ ## Dependencies
68
+
69
+ | Dependency | 4.4.2 | 4.4.3 |
70
+ | --- | --- | --- |
71
+ | Google Mobile Ads Next-Gen SDK | 1.3.0 | **1.3.1** |
72
+ | Yandex Mobile Ads | 8.2.0 | **8.3.0** |
73
+ | Compose BOM | 2026.06.01 | **2026.08.00** |
74
+ | Firebase BOM | 34.15.0 | **34.17.0** |
75
+ | AndroidX AppCompat | 1.7.1 | **1.8.0** |
76
+ | ConstraintLayout | 2.2.1 | **2.2.2** |
77
+ | org.json (test only) | 20250517 | **20260719** |
78
+
79
+ Google Play Billing stays at **9.1.0** and Kotlin at **2.2.10**.
80
+
81
+ ### Sample app now compiles at JVM 17
82
+
83
+ The `app` sample module was the only module still pinned to `jvmTarget = "1.8"`, while all five published modules use 17. Compose BOM 2026.08.00 ships artifacts compiled at JVM 11+, which cannot be inlined into 1.8 bytecode — so the bump broke `assembleDebug` on the sample with `Cannot inline bytecode built with JVM target 11 into bytecode that is being built with JVM target 1.8`.
84
+
85
+ The sample now uses `VERSION_17` / `jvmTarget = "17"`, matching the library modules. **This does not affect the published artifacts** — their compile options were already 17 and are unchanged. It is noted here only because anyone building the repo from source would otherwise hit it.
86
+
87
+ ---
88
+
89
+ ## Documentation
90
+
91
+ `docs/APP_PURCHASE_GUIDE.md` now documents what pending purchases require from the host app. A pending order (cash, bank transfer, parental approval) can complete hours or days later while the app is closed; `onPurchasesUpdated` only fires if the app happens to be running, so Play requires apps to re-query owned purchases on every foreground. `AppPurchase` queries on billing init, and if the process survives the transition that never runs again — so the guide now shows calling `refreshPurchases()` from the main activity's `onResume()`, and explains that this is what stops a completed pending order from being auto-cancelled on day 3.
92
+
93
+ ---
94
+
95
+ ## Verification
96
+
97
+ `assembleDebug` succeeds and `testDebugUnitTest --rerun-tasks` passes **176 tests, 0 failures** — 173 existing plus 3 new `RewardedAdManagerStaleLoadTest` cases pinning down the stale-load contract:
98
+
99
+ - an abandoned load's failure must not discard an ad another load produced
100
+ - an abandoned load's failure must not clear the replacement's `isLoading`
101
+ - an ad arriving after the timeout is kept for the next show rather than dropped
102
+
103
+ The tests drive the waterfall path, whose providers are fakes the test can complete by hand; the AdMob path runs the same generation checks over a static SDK entry point.
104
+
105
+ The billing changes are **not** covered by automated tests — both depend on `BillingClient` connection-state transitions that the existing `ProductDetailsFactory`-based harness cannot drive. They were verified by reading every call site of `isServiceConnected` and every `acknowledgePurchaseIfNeeded` path; on-device verification against a Play test track is recommended.
106
+
107
+ ---
108
+
109
+ ## Upgrading
110
+
111
+ Drop-in from 4.4.x. No source changes required.
112
+
113
+ If your app relies on pending purchases, add the `onResume()` refresh described under [Documentation](#documentation) — the library cannot do this for you, since it does not own your activity lifecycle.
114
+
115
+ ```groovy
116
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
117
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.3'
118
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
119
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.3'
120
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.3'
121
+ ```
@@ -1,4 +1,4 @@
1
- # Ad Loading Strategies - AdManageKit v4.4.2
1
+ # Ad Loading Strategies - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
@@ -1,10 +1,10 @@
1
- # App Open Ads - AdManageKit v4.4.2
1
+ # App Open Ads - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides lifecycle-aware app open ad management through `AppOpenManager`. App open ads display when users launch or return to your app, with support for loading strategies, ad freshness enforcement, welcome dialogs, activity/screen exclusion, and the multi-provider waterfall.
6
6
 
7
- **Library Version**: v4.4.2
7
+ **Library Version**: v4.4.3
8
8
 
9
9
  ## Features
10
10
 
@@ -23,9 +23,9 @@ AdManageKit provides lifecycle-aware app open ad management through `AppOpenMana
23
23
 
24
24
  ```groovy
25
25
  dependencies {
26
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
27
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.2'
28
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
26
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
27
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.3'
28
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
29
29
  }
30
30
  ```
31
31
 
@@ -1,10 +1,10 @@
1
- # Banner Ads - AdManageKit v4.4.2
1
+ # Banner Ads - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides `BannerAdView` for banner ad integration with every standard AdMob size, adaptive banners, collapsible banners, a size-aware loading shimmer, auto-refresh, and smart retry logic.
6
6
 
7
- **Library Version**: v4.4.2
7
+ **Library Version**: v4.4.3
8
8
 
9
9
  ## Features
10
10
 
@@ -23,8 +23,8 @@ AdManageKit provides `BannerAdView` for banner ad integration with every standar
23
23
 
24
24
  ```groovy
25
25
  dependencies {
26
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
27
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
26
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
27
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
28
28
  }
29
29
  ```
30
30
 
@@ -7,8 +7,8 @@ AdManageKit provides a comprehensive billing integration module (`admanagekit-bi
7
7
  ### 1. Add Dependency
8
8
 
9
9
  ```groovy
10
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.2'
11
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
10
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.3'
11
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
12
12
  ```
13
13
 
14
14
  ### 2. Define Products
@@ -52,6 +52,24 @@ class MyApp : Application() {
52
52
  > Only `PurchaseState.PURCHASED` grants entitlement (pending purchases do not).
53
53
  > Consumables still require a manual `consumePurchase(productId)` after granting.
54
54
 
55
+ > **Pending purchases need one thing from you (v4.4.3).** A pending order (cash,
56
+ > bank transfer, parental approval) can complete hours or days later, while your
57
+ > app is closed. `onPurchasesUpdated` only fires if the app happens to be
58
+ > running, so Play requires apps to re-query owned purchases on every foreground.
59
+ > `AppPurchase` queries on billing init; if your process stays alive across the
60
+ > transition, that never runs again — so call `refreshPurchases()` from your main
61
+ > activity's `onResume()`:
62
+ >
63
+ > ```kotlin
64
+ > override fun onResume() {
65
+ > super.onResume()
66
+ > AppPurchase.getInstance().refreshPurchases()
67
+ > }
68
+ > ```
69
+ >
70
+ > It acknowledges every unacknowledged `PURCHASED` purchase it finds, which is
71
+ > what stops a completed pending order from being auto-cancelled on day 3.
72
+
55
73
  ### 4. Make Purchases
56
74
 
57
75
  ```kotlin
@@ -1,4 +1,4 @@
1
- # Configuration - AdManageKit v4.4.2
1
+ # Configuration - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
@@ -6,22 +6,22 @@
6
6
 
7
7
  AdManageKit is a comprehensive Android library designed to simplify the integration and management of Google AdMob ads, Google Play Billing, and User Messaging Platform (UMP) consent.
8
8
 
9
- **Latest Version: `4.4.2`**
9
+ **Latest Version: `4.4.3`**
10
10
 
11
- ## What's New in 4.4.2
11
+ ## What's New in 4.4.3
12
12
 
13
- Bug-fix release, no API changes. Two deliberate behavior changes are noted below.
13
+ Bug-fix and dependency release, no API changes. Two silent-failure bugs, both of which cost money.
14
14
 
15
- - **Rewarded ads could crash** — every show-path callback, including `onRewardEarned`, was delivered on a background thread
16
- - **A completed purchase could fail to disable ads** until the next app launch
17
- - **Blank gaps** where banner/native slots should have collapsed, for premium users and after a failed load, in both XML and Compose
18
- - **App open ads could appear over excluded screens**, including flows protected by `disableAppOpenAdsTemporarily()`
19
- - **`BannerAdView` leaked its Activity** and kept requesting ads after being detached
15
+ - **A timed-out rewarded load could sabotage the one that replaced it** — a request handed to the SDK cannot be cancelled, and when it finally reported back it could discard an ad a *newer* load had just delivered, clear the loading flag out from under a request still in flight, and fail callers waiting on a load that had not finished. Every load path now carries a generation token, and a late ad is kept for the next show instead of dropped
16
+ - **Billing could stop acknowledging purchases for the rest of the process** the connection flag could latch `false` after one disconnect while the client was actually ready, disabling every purchase re-query including the acknowledgment retry. Play auto-refunds an unacknowledged purchase after 3 days
17
+ - **Acknowledgment no longer requires a configured product id** a `PURCHASED` order the current build does not list (promo grants, dropped products, a Console typo) was never acknowledged, and so was auto-refunded on day 3
18
+ - **Dependencies** Next-Gen GMA SDK 1.3.1, Yandex Mobile Ads 8.3.0, Compose BOM 2026.08.00, Firebase BOM 34.17.0, AppCompat 1.8.0
20
19
 
21
- > **Behavior changes:** an account-hold subscription no longer disables ads (it already reported `ON_HOLD` and failed `isSubscriptionActive()`), and premium users no longer reserve ad space in Compose.
20
+ > **Pending purchases need one thing from your app:** call `refreshPurchases()` from your main activity's `onResume()`. See [[Billing Integration]].
22
21
 
23
22
  ## Recent Highlights
24
23
 
24
+ - **4.4.2** — Rewarded callbacks marshalled to the main thread (they could crash the app), a completed purchase could fail to disable ads, blank gaps where banner/native slots should have collapsed, and a `BannerAdView` Activity leak. Behavior changes: an account-hold subscription no longer disables ads, and premium users no longer reserve ad space in Compose
25
25
  - **4.4.1** — Google Mobile Ads Next-Gen SDK 1.3.0 (from 1.2.1), plus repairs to API doc generation and the MCP documentation server
26
26
  - **4.4.0** — Subscription offers can be **purchased individually** (`subscribe(activity, offer)`), offer lookup by id/base plan/tag, cross-cadence price normalization (`BillingPeriod`, `getSavingsPercent`), trial eligibility, Play Billing 9 one-time product offers, and client-side **account hold** detection. See [[Subscription Offers]]
27
27
  - **4.3.x** — All standard banner sizes (`BannerAdSize`), custom native templates, and app-open ad freshness enforcement
@@ -84,15 +84,15 @@ dependencyResolutionManagement {
84
84
  **Step 2:** Add dependencies to your app's `build.gradle`:
85
85
 
86
86
  ```groovy
87
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
88
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.2'
89
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
87
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
88
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.3'
89
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
90
90
 
91
91
  // For Jetpack Compose support
92
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.2'
92
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.3'
93
93
 
94
94
  // For Yandex Ads multi-provider support
95
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.2'
95
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.3'
96
96
  ```
97
97
 
98
98
  **Step 3:** Ensure your app's `compileSdk` is **37 or higher** (required transitively as of 4.2.0).
@@ -1,10 +1,10 @@
1
- # Interstitial Ads - AdManageKit v4.4.2
1
+ # Interstitial Ads - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides a complete interstitial ad stack with `AdManager` and the fluent `InterstitialAdBuilder`. Features include loading strategies, automatic retry, frequency controls, splash screen support, and Jetpack Compose utilities.
6
6
 
7
- **Library Version**: v4.4.2
7
+ **Library Version**: v4.4.3
8
8
 
9
9
  ## What's New
10
10
 
@@ -23,11 +23,11 @@ AdManageKit provides a complete interstitial ad stack with `AdManager` and the f
23
23
 
24
24
  ```groovy
25
25
  dependencies {
26
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
27
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
28
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.2'
26
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
27
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
28
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v4.4.3'
29
29
  // Optional - Jetpack Compose
30
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.2'
30
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.3'
31
31
  }
32
32
  ```
33
33
 
@@ -1,18 +1,18 @@
1
- # Jetpack Compose Integration - AdManageKit v4.4.2
1
+ # Jetpack Compose Integration - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides first-class Jetpack Compose support with composable functions for all ad types, state management helpers, and programmatic native ad loading.
6
6
 
7
- **Library Version**: v4.4.2
7
+ **Library Version**: v4.4.3
8
8
 
9
9
  ## Installation
10
10
 
11
11
  ```groovy
12
12
  dependencies {
13
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
14
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
15
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.2'
13
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
14
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
15
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v4.4.3'
16
16
  }
17
17
  ```
18
18
 
@@ -38,11 +38,11 @@ This is fully backward compatible -- if no provider chains are configured, all e
38
38
 
39
39
  ```groovy
40
40
  dependencies {
41
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2"
42
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2"
41
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3"
42
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3"
43
43
 
44
44
  // Add Yandex provider
45
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.2"
45
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.3"
46
46
  }
47
47
  ```
48
48
 
@@ -1,10 +1,10 @@
1
- # Native Ads - AdManageKit v4.4.2
1
+ # Native Ads - AdManageKit v4.4.3
2
2
 
3
3
  ## Overview
4
4
 
5
5
  AdManageKit provides comprehensive native ad support with caching, multiple formats, and the new `NativeTemplateView` (v2.6.0+). Native ads blend seamlessly with your app's content while maximizing engagement.
6
6
 
7
- **Library Version**: v4.4.2
7
+ **Library Version**: v4.4.3
8
8
 
9
9
  ## Features
10
10
 
@@ -19,8 +19,8 @@ AdManageKit provides comprehensive native ad support with caching, multiple form
19
19
 
20
20
  ```groovy
21
21
  dependencies {
22
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2'
23
- implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2'
22
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3'
23
+ implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3'
24
24
  }
25
25
  ```
26
26
 
@@ -10,9 +10,9 @@ The `admanagekit-yandex` module provides Yandex Ads SDK providers for the multi-
10
10
 
11
11
  ```groovy
12
12
  dependencies {
13
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.2"
14
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.2"
15
- implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.2"
13
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit:v4.4.3"
14
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-core:v4.4.3"
15
+ implementation "com.github.i2hammad.AdManageKit:ad-manage-kit-yandex:v4.4.3"
16
16
  }
17
17
  ```
18
18
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "admanagekit-mcp-server",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "MCP server for AdManageKit Android library - documentation lookup and code generation",
5
5
  "main": "dist/index.js",
6
6
  "bin": {