admanagekit-mcp-server 1.0.0
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 +851 -0
- package/content/docs/AD_FREQUENCY_CONTROL.md +450 -0
- package/content/docs/AD_LOADING_STRATEGIES.md +369 -0
- package/content/docs/API_REFERENCE.md +734 -0
- package/content/docs/APP_PURCHASE_GUIDE.md +704 -0
- package/content/docs/BANNER_AD_IMPROVEMENTS.md +325 -0
- package/content/docs/COMPOSE_INTEGRATION.md +477 -0
- package/content/docs/CONFIGURATION_USAGE.md +168 -0
- package/content/docs/INTERSTITIAL_BUILDER_GUIDE.md +518 -0
- package/content/docs/JAVA_USAGE_GUIDE.md +785 -0
- package/content/docs/LOADING_STRATEGY_EXAMPLES.md +463 -0
- package/content/docs/NATIVE_AD_MANAGER_ENHANCEMENTS.md +347 -0
- package/content/docs/NATIVE_AD_PRELOADING.md +467 -0
- package/content/docs/NATIVE_TEMPLATE_VIEW.md +413 -0
- package/content/docs/app-open-ads.md +412 -0
- package/content/docs/interstitial-ads.md +269 -0
- package/content/docs/native-ads-caching.md +182 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.1.0.md +156 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.2.0.md +248 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.3.0.md +280 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.5.0.md +73 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.6.0.md +265 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.7.0.md +168 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.8.0.md +153 -0
- package/content/docs/release-notes/RELEASE_NOTES_v2.9.0.md +479 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.0.0.md +343 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.1.0.md +131 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.3.0.md +252 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.3.2.md +215 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.3.3.md +116 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.3.4.md +142 -0
- package/content/docs/release-notes/RELEASE_NOTES_v3.3.5.md +94 -0
- package/content/docs/rewarded-ads.md +623 -0
- package/content/wiki/Ad-Loading-Strategies.md +209 -0
- package/content/wiki/App-Open-Ads.md +189 -0
- package/content/wiki/Banner-Ads.md +133 -0
- package/content/wiki/Billing-Integration.md +69 -0
- package/content/wiki/Configuration.md +252 -0
- package/content/wiki/Consumable-Products.md +166 -0
- package/content/wiki/Home.md +144 -0
- package/content/wiki/Interstitial-Ads.md +313 -0
- package/content/wiki/Jetpack-Compose.md +270 -0
- package/content/wiki/NativeAdManager.md +220 -0
- package/content/wiki/Purchase-Categories.md +94 -0
- package/content/wiki/Rewarded-Ads.md +420 -0
- package/content/wiki/Subscription-Upgrades.md +278 -0
- package/content/wiki/Subscriptions.md +368 -0
- package/content/wiki/_Footer.md +3 -0
- package/content/wiki/_Sidebar.md +18 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +18 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/code-generation.d.ts +2 -0
- package/dist/tools/code-generation.js +264 -0
- package/dist/tools/code-generation.js.map +1 -0
- package/dist/tools/documentation.d.ts +2 -0
- package/dist/tools/documentation.js +202 -0
- package/dist/tools/documentation.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.js +83 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/doc-loader.d.ts +17 -0
- package/dist/utils/doc-loader.js +245 -0
- package/dist/utils/doc-loader.js.map +1 -0
- package/dist/utils/search.d.ts +2 -0
- package/dist/utils/search.js +62 -0
- package/dist/utils/search.js.map +1 -0
- package/dist/utils/templates.d.ts +60 -0
- package/dist/utils/templates.js +793 -0
- package/dist/utils/templates.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Release Notes - v2.7.0
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- **Smart Splash Screen Support**: New `waitForLoading()` for optimal splash ad experience
|
|
6
|
+
- **Fixed HYBRID/ONLY_CACHE Strategies**: Now properly use cached ads
|
|
7
|
+
- **Premium User Optimization**: Skip ad requests for premium users
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## New Features
|
|
12
|
+
|
|
13
|
+
### 1. Smart Splash Screen Pattern
|
|
14
|
+
|
|
15
|
+
New `waitForLoading()` method in `InterstitialAdBuilder` for intelligent splash screen ad handling:
|
|
16
|
+
|
|
17
|
+
```kotlin
|
|
18
|
+
// In Application.onCreate() - Start loading early
|
|
19
|
+
AdManager.getInstance().loadInterstitialAd(this, adUnitId)
|
|
20
|
+
|
|
21
|
+
// In SplashActivity - Smart wait behavior
|
|
22
|
+
InterstitialAdBuilder.with(this)
|
|
23
|
+
.adUnit(adUnitId)
|
|
24
|
+
.waitForLoading() // Smart: shows cached, waits for loading, or force fetches
|
|
25
|
+
.timeout(5000) // 5 second max wait
|
|
26
|
+
.show { startMainActivity() }
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Behavior:**
|
|
30
|
+
| Ad State | Action |
|
|
31
|
+
|----------|--------|
|
|
32
|
+
| **READY** | Shows immediately (no waiting) |
|
|
33
|
+
| **LOADING** | Waits with timeout, shows when ready |
|
|
34
|
+
| **NOT STARTED** | Force fetches with loading dialog |
|
|
35
|
+
|
|
36
|
+
### 2. New AdManager Methods
|
|
37
|
+
|
|
38
|
+
```kotlin
|
|
39
|
+
// Check if ad is currently being loaded
|
|
40
|
+
AdManager.getInstance().isLoading(): Boolean
|
|
41
|
+
|
|
42
|
+
// Smart show for splash screens (used by waitForLoading())
|
|
43
|
+
AdManager.getInstance().showOrWaitForAd(
|
|
44
|
+
activity,
|
|
45
|
+
callback,
|
|
46
|
+
timeoutMillis = 5000,
|
|
47
|
+
showDialogIfLoading = true
|
|
48
|
+
)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 3. Enhanced Frequency Controls
|
|
52
|
+
|
|
53
|
+
New methods in `InterstitialAdBuilder`:
|
|
54
|
+
|
|
55
|
+
```kotlin
|
|
56
|
+
InterstitialAdBuilder.with(activity)
|
|
57
|
+
.adUnit(adUnitId)
|
|
58
|
+
.everyNthTime(3) // Show every 3rd call
|
|
59
|
+
.maxShows(5) // Maximum 5 shows total
|
|
60
|
+
.minIntervalSeconds(30) // Minimum 30 seconds between shows
|
|
61
|
+
.timeout(5000) // 5 second load timeout
|
|
62
|
+
.show { next() }
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Bug Fixes
|
|
68
|
+
|
|
69
|
+
### 1. HYBRID/ONLY_CACHE Strategy Fix
|
|
70
|
+
|
|
71
|
+
**Before (Bug):** When ad was cached, HYBRID and ONLY_CACHE strategies incorrectly called `forceShowInterstitial()` which cleared the cache and fetched fresh.
|
|
72
|
+
|
|
73
|
+
**After (Fixed):** Now uses `showInterstitialIfReady()` to properly show cached ads.
|
|
74
|
+
|
|
75
|
+
```kotlin
|
|
76
|
+
// HYBRID now correctly:
|
|
77
|
+
// - If ready → shows CACHED ad (not fresh fetch)
|
|
78
|
+
// - If not ready → fetches fresh with dialog
|
|
79
|
+
|
|
80
|
+
// ONLY_CACHE now correctly:
|
|
81
|
+
// - If ready → shows CACHED ad
|
|
82
|
+
// - If not ready → skips (no fetch)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 2. Premium User Optimization
|
|
86
|
+
|
|
87
|
+
**Before:** `loadInterstitialAd()` made network requests even for premium users.
|
|
88
|
+
|
|
89
|
+
**After:** Skips ad loading entirely for premium users, saving bandwidth.
|
|
90
|
+
|
|
91
|
+
```kotlin
|
|
92
|
+
fun loadInterstitialAd(context: Context, adUnitId: String) {
|
|
93
|
+
// Skip loading for premium users - no need to request ads
|
|
94
|
+
val purchaseProvider = BillingConfig.getPurchaseProvider()
|
|
95
|
+
if (purchaseProvider.isPurchased()) {
|
|
96
|
+
return // No network request made
|
|
97
|
+
}
|
|
98
|
+
// ... load ad
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## API Changes
|
|
105
|
+
|
|
106
|
+
### InterstitialAdBuilder - New Methods
|
|
107
|
+
|
|
108
|
+
| Method | Description |
|
|
109
|
+
|--------|-------------|
|
|
110
|
+
| `.waitForLoading()` | Smart splash screen behavior |
|
|
111
|
+
| `.everyNthTime(n)` | Show every Nth call |
|
|
112
|
+
| `.minInterval(ms)` | Minimum ms between shows |
|
|
113
|
+
| `.minIntervalSeconds(s)` | Minimum seconds between shows |
|
|
114
|
+
| `.timeout(ms)` | Set load timeout in ms |
|
|
115
|
+
| `.timeoutSeconds(s)` | Set load timeout in seconds |
|
|
116
|
+
|
|
117
|
+
### AdManager - New Methods
|
|
118
|
+
|
|
119
|
+
| Method | Description |
|
|
120
|
+
|--------|-------------|
|
|
121
|
+
| `isLoading()` | Check if ad is currently loading |
|
|
122
|
+
| `showOrWaitForAd()` | Smart show with wait-for-loading support |
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Migration Guide
|
|
127
|
+
|
|
128
|
+
### From 2.6.0 to 2.7.0
|
|
129
|
+
|
|
130
|
+
**Fully backward compatible.** Optionally adopt new features:
|
|
131
|
+
|
|
132
|
+
```kotlin
|
|
133
|
+
// Old splash pattern (still works)
|
|
134
|
+
AdManager.getInstance().loadInterstitialAdForSplash(this, adUnitId, 10000, callback)
|
|
135
|
+
|
|
136
|
+
// New recommended pattern
|
|
137
|
+
AdManager.getInstance().loadInterstitialAd(this, adUnitId) // In Application
|
|
138
|
+
InterstitialAdBuilder.with(this)
|
|
139
|
+
.adUnit(adUnitId)
|
|
140
|
+
.waitForLoading()
|
|
141
|
+
.timeout(5000)
|
|
142
|
+
.show { startMainActivity() }
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Installation
|
|
148
|
+
|
|
149
|
+
```groovy
|
|
150
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v2.7.0'
|
|
151
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v2.7.0'
|
|
152
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v2.7.0'
|
|
153
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v2.7.0'
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Full Changelog
|
|
159
|
+
|
|
160
|
+
- Added `waitForLoading()` to InterstitialAdBuilder for smart splash screen support
|
|
161
|
+
- Added `showOrWaitForAd()` to AdManager for intelligent ad display
|
|
162
|
+
- Added `isLoading()` to AdManager to check loading state
|
|
163
|
+
- Added frequency control methods: `everyNthTime()`, `minInterval()`, `minIntervalSeconds()`
|
|
164
|
+
- Added timeout methods: `timeout()`, `timeoutSeconds()`
|
|
165
|
+
- Fixed HYBRID strategy to use cached ads instead of fetching fresh
|
|
166
|
+
- Fixed ONLY_CACHE strategy to use cached ads instead of fetching fresh
|
|
167
|
+
- Optimized `loadInterstitialAd()` to skip loading for premium users
|
|
168
|
+
- Updated documentation with splash screen patterns
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Release Notes - v2.8.0
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- **Loading Strategy for AdManager**: `forceShowInterstitial()` now respects global loading strategy
|
|
6
|
+
- **Global Auto-Reload Config**: New `interstitialAutoReload` setting with per-call override
|
|
7
|
+
- **Code Cleanup**: Removed unused `respectInterval` from InterstitialAdBuilder
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## New Features
|
|
12
|
+
|
|
13
|
+
### 1. Loading Strategy Support in AdManager
|
|
14
|
+
|
|
15
|
+
`forceShowInterstitial()` and `forceShowInterstitialWithDialog()` now respect `AdManageKitConfig.interstitialLoadingStrategy`:
|
|
16
|
+
|
|
17
|
+
```kotlin
|
|
18
|
+
// Configure globally
|
|
19
|
+
AdManageKitConfig.interstitialLoadingStrategy = AdLoadingStrategy.HYBRID
|
|
20
|
+
|
|
21
|
+
// Old method now respects strategy!
|
|
22
|
+
AdManager.getInstance().forceShowInterstitial(activity, callback)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Behavior based on strategy:**
|
|
26
|
+
|
|
27
|
+
| Strategy | Behavior |
|
|
28
|
+
|----------|----------|
|
|
29
|
+
| ON_DEMAND | Always fetch fresh ad with dialog |
|
|
30
|
+
| ONLY_CACHE | Show cached if ready, skip otherwise |
|
|
31
|
+
| HYBRID | Show cached if ready, fetch fresh otherwise |
|
|
32
|
+
|
|
33
|
+
### 2. New `forceShowInterstitialAlways()` Method
|
|
34
|
+
|
|
35
|
+
For cases where you need to bypass the strategy and always force fetch:
|
|
36
|
+
|
|
37
|
+
```kotlin
|
|
38
|
+
// Always forces fresh fetch (ignores global strategy)
|
|
39
|
+
AdManager.getInstance().forceShowInterstitialAlways(activity, callback)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This is used internally by `InterstitialAdBuilder` when explicit force behavior is needed.
|
|
43
|
+
|
|
44
|
+
### 3. Global Auto-Reload Configuration
|
|
45
|
+
|
|
46
|
+
New `interstitialAutoReload` setting in `AdManageKitConfig`:
|
|
47
|
+
|
|
48
|
+
```kotlin
|
|
49
|
+
// Global config - applies to all AdManager methods
|
|
50
|
+
AdManageKitConfig.interstitialAutoReload = false // Disable auto-reload globally
|
|
51
|
+
|
|
52
|
+
// Per-call override via InterstitialAdBuilder
|
|
53
|
+
InterstitialAdBuilder.with(activity)
|
|
54
|
+
.adUnit(adUnitId)
|
|
55
|
+
.autoReload(true) // Override global setting for this call
|
|
56
|
+
.show { next() }
|
|
57
|
+
|
|
58
|
+
// Per-call override via AdManager
|
|
59
|
+
AdManager.getInstance().showInterstitialIfReady(activity, callback, reloadAd = false)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Priority:** `InterstitialAdBuilder.autoReload()` > `AdManageKitConfig.interstitialAutoReload`
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Code Cleanup
|
|
67
|
+
|
|
68
|
+
### Removed Unused `respectInterval`
|
|
69
|
+
|
|
70
|
+
The `respectInterval` property and method in `InterstitialAdBuilder` were never used and have been removed. Use `minInterval()` instead for interval control:
|
|
71
|
+
|
|
72
|
+
```kotlin
|
|
73
|
+
InterstitialAdBuilder.with(activity)
|
|
74
|
+
.adUnit(adUnitId)
|
|
75
|
+
.minIntervalSeconds(30) // Minimum 30 seconds between shows
|
|
76
|
+
.show { next() }
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## API Changes
|
|
82
|
+
|
|
83
|
+
### AdManager - Updated Methods
|
|
84
|
+
|
|
85
|
+
| Method | Change |
|
|
86
|
+
|--------|--------|
|
|
87
|
+
| `forceShowInterstitial()` | Now respects `interstitialLoadingStrategy` |
|
|
88
|
+
| `forceShowInterstitialWithDialog()` | Now respects `interstitialLoadingStrategy` |
|
|
89
|
+
| `showInterstitialIfReady()` | Default `reloadAd` now uses global config |
|
|
90
|
+
| `showInterstitialAdByTime()` | Now uses global `interstitialAutoReload` |
|
|
91
|
+
| `showInterstitialAdByCount()` | Now uses global `interstitialAutoReload` |
|
|
92
|
+
|
|
93
|
+
### AdManager - New Methods
|
|
94
|
+
|
|
95
|
+
| Method | Description |
|
|
96
|
+
|--------|-------------|
|
|
97
|
+
| `forceShowInterstitialAlways()` | Always force fetch (bypasses strategy) |
|
|
98
|
+
|
|
99
|
+
### AdManageKitConfig - New Settings
|
|
100
|
+
|
|
101
|
+
| Setting | Description | Default |
|
|
102
|
+
|---------|-------------|---------|
|
|
103
|
+
| `interstitialAutoReload` | Auto-reload interstitial after showing | `true` |
|
|
104
|
+
|
|
105
|
+
### InterstitialAdBuilder - Removed
|
|
106
|
+
|
|
107
|
+
| Method | Reason |
|
|
108
|
+
|--------|--------|
|
|
109
|
+
| `respectInterval()` | Never used, use `minInterval()` instead |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Migration Guide
|
|
114
|
+
|
|
115
|
+
### From 2.7.0 to 2.8.0
|
|
116
|
+
|
|
117
|
+
**Fully backward compatible** with one behavioral change:
|
|
118
|
+
|
|
119
|
+
**`forceShowInterstitial()` behavior change:**
|
|
120
|
+
- **Before (2.7.0):** Always fetched fresh ad
|
|
121
|
+
- **After (2.8.0):** Respects `interstitialLoadingStrategy`
|
|
122
|
+
|
|
123
|
+
If you need the old behavior (always force fetch):
|
|
124
|
+
```kotlin
|
|
125
|
+
// Option 1: Set strategy to ON_DEMAND
|
|
126
|
+
AdManageKitConfig.interstitialLoadingStrategy = AdLoadingStrategy.ON_DEMAND
|
|
127
|
+
|
|
128
|
+
// Option 2: Use the new always-force method
|
|
129
|
+
AdManager.getInstance().forceShowInterstitialAlways(activity, callback)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Installation
|
|
135
|
+
|
|
136
|
+
```groovy
|
|
137
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit:v2.8.0'
|
|
138
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-billing:v2.8.0'
|
|
139
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-core:v2.8.0'
|
|
140
|
+
implementation 'com.github.i2hammad.AdManageKit:ad-manage-kit-compose:v2.8.0'
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Full Changelog
|
|
146
|
+
|
|
147
|
+
- `forceShowInterstitial()` now respects `AdManageKitConfig.interstitialLoadingStrategy`
|
|
148
|
+
- `forceShowInterstitialWithDialog()` now respects loading strategy
|
|
149
|
+
- Added `forceShowInterstitialAlways()` for explicit force fetch behavior
|
|
150
|
+
- Added `interstitialAutoReload` to AdManageKitConfig for global auto-reload control
|
|
151
|
+
- Updated AdManager methods to use global `interstitialAutoReload` as default
|
|
152
|
+
- Removed unused `respectInterval` property and method from InterstitialAdBuilder
|
|
153
|
+
- InterstitialAdBuilder now uses `forceShowInterstitialAlways()` for explicit force behavior
|