admanagekit-mcp-server 1.1.0 → 1.2.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/dist/tools/code-generation.js +19 -10
- package/dist/tools/code-generation.js.map +1 -1
- package/dist/tools/documentation.js +36 -16
- package/dist/tools/documentation.js.map +1 -1
- package/dist/types.d.ts +0 -3
- package/dist/types.js +11 -39
- package/dist/types.js.map +1 -1
- package/dist/utils/doc-loader.d.ts +24 -0
- package/dist/utils/doc-loader.js +77 -1
- package/dist/utils/doc-loader.js.map +1 -1
- package/dist/utils/templates.js +350 -33
- package/dist/utils/templates.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerCodeGenerationTools = registerCodeGenerationTools;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const templates_js_1 = require("../utils/templates.js");
|
|
6
|
+
// Mirrors config/AdLoadingStrategy.kt. All four values are valid for every
|
|
7
|
+
// strategy field — the schema previously omitted FRESH_WITH_CACHE_FALLBACK
|
|
8
|
+
// entirely and restricted native ads to two of the four.
|
|
9
|
+
const AD_LOADING_STRATEGIES = [
|
|
10
|
+
"ON_DEMAND",
|
|
11
|
+
"ONLY_CACHE",
|
|
12
|
+
"HYBRID",
|
|
13
|
+
"FRESH_WITH_CACHE_FALLBACK",
|
|
14
|
+
];
|
|
6
15
|
function registerCodeGenerationTools(server) {
|
|
7
16
|
// Tool 7: generate_config
|
|
8
17
|
server.tool("generate_config", "Generate AdManageKitConfig setup code for your Application class. Produces complete configuration including ad initialization, billing setup, and loading strategies.", {
|
|
@@ -30,13 +39,9 @@ function registerCodeGenerationTools(server) {
|
|
|
30
39
|
.boolean()
|
|
31
40
|
.optional()
|
|
32
41
|
.describe("Enable performance tracking"),
|
|
33
|
-
interstitial_strategy: zod_1.z
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
app_open_strategy: zod_1.z
|
|
37
|
-
.enum(["ON_DEMAND", "ONLY_CACHE", "HYBRID"])
|
|
38
|
-
.optional(),
|
|
39
|
-
native_strategy: zod_1.z.enum(["ON_DEMAND", "HYBRID"]).optional(),
|
|
42
|
+
interstitial_strategy: zod_1.z.enum(AD_LOADING_STRATEGIES).optional(),
|
|
43
|
+
app_open_strategy: zod_1.z.enum(AD_LOADING_STRATEGIES).optional(),
|
|
44
|
+
native_strategy: zod_1.z.enum(AD_LOADING_STRATEGIES).optional(),
|
|
40
45
|
interstitial_auto_reload: zod_1.z.boolean().optional(),
|
|
41
46
|
app_open_auto_reload: zod_1.z.boolean().optional(),
|
|
42
47
|
rewarded_auto_reload: zod_1.z.boolean().optional(),
|
|
@@ -102,7 +107,7 @@ function registerCodeGenerationTools(server) {
|
|
|
102
107
|
.optional()
|
|
103
108
|
.describe("For interstitial: how to show the ad"),
|
|
104
109
|
loading_strategy: zod_1.z
|
|
105
|
-
.enum(
|
|
110
|
+
.enum(AD_LOADING_STRATEGIES)
|
|
106
111
|
.optional()
|
|
107
112
|
.describe("Loading strategy to use"),
|
|
108
113
|
use_caching: zod_1.z
|
|
@@ -171,12 +176,16 @@ function registerCodeGenerationTools(server) {
|
|
|
171
176
|
"setup",
|
|
172
177
|
"purchase",
|
|
173
178
|
"subscribe",
|
|
179
|
+
"offers",
|
|
174
180
|
"consumable",
|
|
175
181
|
"subscription_management",
|
|
182
|
+
"account_hold",
|
|
176
183
|
"expiry_verification",
|
|
177
184
|
"complete",
|
|
178
185
|
])
|
|
179
|
-
.describe("Which billing scenario to generate code for"
|
|
186
|
+
.describe("Which billing scenario to generate code for. 'offers' covers multi-offer paywalls " +
|
|
187
|
+
"(enumerating offers, buying a specific one, savings badges, trial eligibility); " +
|
|
188
|
+
"'account_hold' covers declined-payment detection and Play's recovery flow."),
|
|
180
189
|
products: zod_1.z
|
|
181
190
|
.array(zod_1.z.object({
|
|
182
191
|
product_id: zod_1.z.string(),
|
|
@@ -235,7 +244,7 @@ function registerCodeGenerationTools(server) {
|
|
|
235
244
|
.optional()
|
|
236
245
|
.describe("For native_template: NativeAdTemplate value (e.g., MATERIAL3)"),
|
|
237
246
|
loading_strategy: zod_1.z
|
|
238
|
-
.enum(
|
|
247
|
+
.enum(AD_LOADING_STRATEGIES)
|
|
239
248
|
.optional(),
|
|
240
249
|
with_callbacks: zod_1.z.boolean().optional(),
|
|
241
250
|
show_mode: zod_1.z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-generation.js","sourceRoot":"","sources":["../../src/tools/code-generation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"code-generation.js","sourceRoot":"","sources":["../../src/tools/code-generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,19 @@ const doc_loader_js_1 = require("../utils/doc-loader.js");
|
|
|
6
6
|
const search_js_1 = require("../utils/search.js");
|
|
7
7
|
const types_js_1 = require("../types.js");
|
|
8
8
|
const topicKeys = Object.keys(types_js_1.TOPIC_MAP);
|
|
9
|
+
/**
|
|
10
|
+
* Builds an enum schema from values discovered in the bundled docs.
|
|
11
|
+
*
|
|
12
|
+
* z.enum() requires a non-empty tuple, so if discovery finds nothing (docs
|
|
13
|
+
* missing or unreadable) this degrades to a plain string rather than throwing
|
|
14
|
+
* at registration time and taking the whole server down. Each tool still
|
|
15
|
+
* validates the value at call time and reports what is actually available.
|
|
16
|
+
*/
|
|
17
|
+
function discoveredEnum(values, description) {
|
|
18
|
+
return values.length > 0
|
|
19
|
+
? zod_1.z.enum(values).describe(description)
|
|
20
|
+
: zod_1.z.string().describe(description);
|
|
21
|
+
}
|
|
9
22
|
function registerDocumentationTools(server) {
|
|
10
23
|
// Tool 1: search_docs
|
|
11
24
|
server.tool("search_docs", "Search across all AdManageKit documentation (docs/, wiki/, README) for a query. Returns matching sections with file paths and relevant snippets.", {
|
|
@@ -75,9 +88,7 @@ function registerDocumentationTools(server) {
|
|
|
75
88
|
});
|
|
76
89
|
// Tool 3: get_api_reference
|
|
77
90
|
server.tool("get_api_reference", "Get the API reference for a specific AdManageKit class or component. Returns method signatures, parameters, and usage examples.", {
|
|
78
|
-
class_name:
|
|
79
|
-
.enum(types_js_1.API_CLASS_NAMES)
|
|
80
|
-
.describe("The class or component name to look up"),
|
|
91
|
+
class_name: discoveredEnum((0, doc_loader_js_1.discoverApiClassNames)(), "The class or component name to look up"),
|
|
81
92
|
}, async ({ class_name }) => {
|
|
82
93
|
const sections = (0, doc_loader_js_1.loadApiSections)();
|
|
83
94
|
const content = sections.get(class_name);
|
|
@@ -109,9 +120,7 @@ function registerDocumentationTools(server) {
|
|
|
109
120
|
});
|
|
110
121
|
// Tool 4: get_release_notes
|
|
111
122
|
server.tool("get_release_notes", "Get release notes for a specific AdManageKit version. Returns new features, breaking changes, migration guides, and bug fixes.", {
|
|
112
|
-
version:
|
|
113
|
-
.enum(["latest", ...types_js_1.RELEASE_VERSIONS])
|
|
114
|
-
.describe("The version to get release notes for (e.g., '3.3.5', '3.0.0'). Use 'latest' for the most recent."),
|
|
123
|
+
version: discoveredEnum(["latest", ...(0, doc_loader_js_1.discoverReleaseVersions)()], "The version to get release notes for (e.g., '4.4.0', '3.0.0'). Use 'latest' for the most recent."),
|
|
115
124
|
}, async ({ version }) => {
|
|
116
125
|
const content = (0, doc_loader_js_1.loadReleaseNotes)(version);
|
|
117
126
|
if (!content) {
|
|
@@ -119,7 +128,7 @@ function registerDocumentationTools(server) {
|
|
|
119
128
|
content: [
|
|
120
129
|
{
|
|
121
130
|
type: "text",
|
|
122
|
-
text: `No release notes found for version ${version}. Available versions: ${
|
|
131
|
+
text: `No release notes found for version ${version}. Available versions: ${(0, doc_loader_js_1.discoverReleaseVersions)().join(", ")}`,
|
|
123
132
|
},
|
|
124
133
|
],
|
|
125
134
|
};
|
|
@@ -130,9 +139,7 @@ function registerDocumentationTools(server) {
|
|
|
130
139
|
});
|
|
131
140
|
// Tool 5: get_migration_guide
|
|
132
141
|
server.tool("get_migration_guide", "Get the migration guide for upgrading between AdManageKit versions. Covers breaking changes, deprecated APIs, and step-by-step migration instructions.", {
|
|
133
|
-
target_version:
|
|
134
|
-
.enum(types_js_1.MIGRATION_VERSIONS)
|
|
135
|
-
.describe("The version you are migrating TO (e.g., '3.0.0', '2.9.0')"),
|
|
142
|
+
target_version: discoveredEnum((0, doc_loader_js_1.discoverMigrationVersions)(), "The version you are migrating TO (e.g., '4.2.0', '3.0.0')"),
|
|
136
143
|
}, async ({ target_version }) => {
|
|
137
144
|
const content = (0, doc_loader_js_1.loadMigrationGuide)(target_version);
|
|
138
145
|
if (!content) {
|
|
@@ -140,7 +147,7 @@ function registerDocumentationTools(server) {
|
|
|
140
147
|
content: [
|
|
141
148
|
{
|
|
142
149
|
type: "text",
|
|
143
|
-
text: `No migration guide found for version ${target_version}. Migration guides are available for: ${
|
|
150
|
+
text: `No migration guide found for version ${target_version}. Migration guides are available for: ${(0, doc_loader_js_1.discoverMigrationVersions)().join(", ")}`,
|
|
144
151
|
},
|
|
145
152
|
],
|
|
146
153
|
};
|
|
@@ -151,6 +158,9 @@ function registerDocumentationTools(server) {
|
|
|
151
158
|
});
|
|
152
159
|
// Tool 6: list_documentation
|
|
153
160
|
server.tool("list_documentation", "List all available AdManageKit documentation topics, API references, release notes, and wiki pages.", {}, async () => {
|
|
161
|
+
const apiClassNames = (0, doc_loader_js_1.discoverApiClassNames)();
|
|
162
|
+
const releaseVersions = (0, doc_loader_js_1.discoverReleaseVersions)();
|
|
163
|
+
const migrationVersions = (0, doc_loader_js_1.discoverMigrationVersions)();
|
|
154
164
|
const listing = `# AdManageKit Documentation
|
|
155
165
|
|
|
156
166
|
## Ad Types
|
|
@@ -176,7 +186,8 @@ function registerDocumentationTools(server) {
|
|
|
176
186
|
- **billing-integration** - Google Play Billing setup and usage
|
|
177
187
|
- **purchase-categories** - CONSUMABLE, FEATURE_UNLOCK, LIFETIME_PREMIUM, REMOVE_ADS
|
|
178
188
|
- **consumables** - Consumable product handling
|
|
179
|
-
- **subscriptions** - Subscription management
|
|
189
|
+
- **subscriptions** - Subscription management, account hold, payment recovery
|
|
190
|
+
- **subscription-offers** - Offers, trials, intro pricing, price comparison
|
|
180
191
|
- **subscription-upgrades** - Upgrade/downgrade flows
|
|
181
192
|
|
|
182
193
|
## Multi-Provider
|
|
@@ -187,19 +198,28 @@ function registerDocumentationTools(server) {
|
|
|
187
198
|
- **java-usage** - Java (non-Kotlin) usage guide
|
|
188
199
|
|
|
189
200
|
## API Reference Classes
|
|
190
|
-
${
|
|
201
|
+
${apiClassNames.map((c) => `- ${c}`).join("\n")}
|
|
191
202
|
|
|
192
203
|
## Release Notes
|
|
193
|
-
${
|
|
204
|
+
${releaseVersions.map((v) => `- v${v}`).join("\n")}
|
|
194
205
|
|
|
195
206
|
## Migration Guides
|
|
196
|
-
${
|
|
207
|
+
${migrationVersions.map((v) => `- Migrating to ${v}`).join("\n")}
|
|
197
208
|
|
|
198
209
|
---
|
|
199
210
|
Use \`get_doc_by_topic\`, \`get_api_reference\`, \`get_release_notes\`, or \`get_migration_guide\` to access specific documentation.
|
|
200
211
|
Use \`search_docs\` to search across all documentation.`;
|
|
212
|
+
// The grouped topic listing above is hand-written, so it can fall behind
|
|
213
|
+
// TOPIC_MAP. Surface anything it missed rather than leaving a registered
|
|
214
|
+
// topic undiscoverable — the failure mode this tool previously had.
|
|
215
|
+
const undocumented = topicKeys.filter((key) => !listing.includes(`**${key}**`));
|
|
216
|
+
const complete = undocumented.length > 0
|
|
217
|
+
? listing.replace("\n---\nUse `get_doc_by_topic`", `\n## Other Topics\n${undocumented
|
|
218
|
+
.map((k) => `- **${k}**`)
|
|
219
|
+
.join("\n")}\n\n---\nUse \`get_doc_by_topic\``)
|
|
220
|
+
: listing;
|
|
201
221
|
return {
|
|
202
|
-
content: [{ type: "text", text:
|
|
222
|
+
content: [{ type: "text", text: complete }],
|
|
203
223
|
};
|
|
204
224
|
});
|
|
205
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../src/tools/documentation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../src/tools/documentation.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,7 +12,4 @@ export interface SearchResult {
|
|
|
12
12
|
score: number;
|
|
13
13
|
}
|
|
14
14
|
export declare const TOPIC_MAP: Record<string, string[]>;
|
|
15
|
-
export declare const API_CLASS_NAMES: readonly ["AdManageKitConfig", "BillingConfig", "AdManager", "AppOpenManager", "BannerAdView", "NativeAdViews", "NativeAdManager", "RewardedAdManager", "AppPurchase", "PurchaseItem", "AdRetryManager", "AdDebugUtils", "AdLoadCallback", "AdManagerCallback", "InterstitialAdBuilder", "WeakReferenceHolder"];
|
|
16
|
-
export declare const RELEASE_VERSIONS: readonly ["3.3.8", "3.3.7", "3.3.5", "3.3.4", "3.3.3", "3.3.2", "3.3.0", "3.1.0", "3.0.0", "2.9.0", "2.8.0", "2.7.0", "2.6.0", "2.5.0", "2.3.0", "2.2.0", "2.1.0"];
|
|
17
|
-
export declare const MIGRATION_VERSIONS: readonly ["3.0.0", "2.9.0", "2.8.0", "2.7.0"];
|
|
18
15
|
export declare const TEST_AD_UNITS: Record<string, string>;
|
package/dist/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TEST_AD_UNITS = exports.
|
|
3
|
+
exports.TEST_AD_UNITS = exports.TOPIC_MAP = void 0;
|
|
4
4
|
exports.TOPIC_MAP = {
|
|
5
5
|
interstitial: [
|
|
6
6
|
"docs/interstitial-ads.md",
|
|
@@ -26,6 +26,7 @@ exports.TOPIC_MAP = {
|
|
|
26
26
|
"purchase-categories": ["wiki/Purchase-Categories.md"],
|
|
27
27
|
consumables: ["wiki/Consumable-Products.md"],
|
|
28
28
|
subscriptions: ["wiki/Subscriptions.md"],
|
|
29
|
+
"subscription-offers": ["wiki/Subscription-Offers.md"],
|
|
29
30
|
"subscription-upgrades": ["wiki/Subscription-Upgrades.md"],
|
|
30
31
|
"java-usage": ["docs/JAVA_USAGE_GUIDE.md"],
|
|
31
32
|
"native-template-view": ["docs/NATIVE_TEMPLATE_VIEW.md"],
|
|
@@ -45,44 +46,15 @@ exports.TOPIC_MAP = {
|
|
|
45
46
|
"wiki/Yandex-Integration.md",
|
|
46
47
|
],
|
|
47
48
|
};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"AppPurchase",
|
|
58
|
-
"PurchaseItem",
|
|
59
|
-
"AdRetryManager",
|
|
60
|
-
"AdDebugUtils",
|
|
61
|
-
"AdLoadCallback",
|
|
62
|
-
"AdManagerCallback",
|
|
63
|
-
"InterstitialAdBuilder",
|
|
64
|
-
"WeakReferenceHolder",
|
|
65
|
-
];
|
|
66
|
-
exports.RELEASE_VERSIONS = [
|
|
67
|
-
"3.3.8",
|
|
68
|
-
"3.3.7",
|
|
69
|
-
"3.3.5",
|
|
70
|
-
"3.3.4",
|
|
71
|
-
"3.3.3",
|
|
72
|
-
"3.3.2",
|
|
73
|
-
"3.3.0",
|
|
74
|
-
"3.1.0",
|
|
75
|
-
"3.0.0",
|
|
76
|
-
"2.9.0",
|
|
77
|
-
"2.8.0",
|
|
78
|
-
"2.7.0",
|
|
79
|
-
"2.6.0",
|
|
80
|
-
"2.5.0",
|
|
81
|
-
"2.3.0",
|
|
82
|
-
"2.2.0",
|
|
83
|
-
"2.1.0",
|
|
84
|
-
];
|
|
85
|
-
exports.MIGRATION_VERSIONS = ["3.0.0", "2.9.0", "2.8.0", "2.7.0"];
|
|
49
|
+
// API class names, release versions and migration versions are deliberately NOT
|
|
50
|
+
// listed here. They are derived from the bundled documentation at startup by
|
|
51
|
+
// discoverApiClassNames(), discoverReleaseVersions() and
|
|
52
|
+
// discoverMigrationVersions() in utils/doc-loader.ts.
|
|
53
|
+
//
|
|
54
|
+
// They used to be hardcoded and drifted badly: the release list stopped at 3.3.8
|
|
55
|
+
// while 38 release-notes files existed, so every version from 3.4.0 onward was
|
|
56
|
+
// rejected by the tool schema, and "latest" returned February 2026. Deriving them
|
|
57
|
+
// means shipping a doc is sufficient to make it reachable.
|
|
86
58
|
exports.TEST_AD_UNITS = {
|
|
87
59
|
banner: "ca-app-pub-3940256099942544/6300978111",
|
|
88
60
|
interstitial: "ca-app-pub-3940256099942544/1033173712",
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAgBa,QAAA,SAAS,GAA6B;IACjD,YAAY,EAAE;QACZ,0BAA0B;QAC1B,oCAAoC;QACpC,0BAA0B;KAC3B;IACD,MAAM,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;IACjE,MAAM,EAAE,CAAC,gCAAgC,EAAE,oBAAoB,CAAC;IAChE,UAAU,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAC5D,QAAQ,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAC1D,oBAAoB,EAAE;QACpB,+BAA+B;QAC/B,+BAA+B;KAChC;IACD,mBAAmB,EAAE,CAAC,8BAA8B,CAAC;IACrD,aAAa,EAAE,CAAC,6BAA6B,EAAE,uBAAuB,CAAC;IACvE,OAAO,EAAE,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;IACnE,sBAAsB,EAAE,CAAC,oCAAoC,CAAC;IAC9D,qBAAqB,EAAE;QACrB,4BAA4B;QAC5B,6BAA6B;KAC9B;IACD,qBAAqB,EAAE,CAAC,6BAA6B,CAAC;IACtD,WAAW,EAAE,CAAC,6BAA6B,CAAC;IAC5C,aAAa,EAAE,CAAC,uBAAuB,CAAC;IACxC,uBAAuB,EAAE,CAAC,+BAA+B,CAAC;IAC1D,YAAY,EAAE,CAAC,0BAA0B,CAAC;IAC1C,sBAAsB,EAAE,CAAC,8BAA8B,CAAC;IACxD,mBAAmB,EAAE,CAAC,8BAA8B,CAAC;IACrD,gBAAgB,EAAE;QAChB,4BAA4B;QAC5B,wCAAwC;KACzC;IACD,qBAAqB,EAAE,CAAC,gCAAgC,CAAC;IACzD,2BAA2B,EAAE,CAAC,mCAAmC,CAAC;IAClE,0BAA0B,EAAE;QAC1B,kCAAkC;QAClC,kCAAkC;KACnC;IACD,oBAAoB,EAAE;QACpB,4BAA4B;QAC5B,4BAA4B;KAC7B;CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAgBa,QAAA,SAAS,GAA6B;IACjD,YAAY,EAAE;QACZ,0BAA0B;QAC1B,oCAAoC;QACpC,0BAA0B;KAC3B;IACD,MAAM,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;IACjE,MAAM,EAAE,CAAC,gCAAgC,EAAE,oBAAoB,CAAC;IAChE,UAAU,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAC5D,QAAQ,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAC1D,oBAAoB,EAAE;QACpB,+BAA+B;QAC/B,+BAA+B;KAChC;IACD,mBAAmB,EAAE,CAAC,8BAA8B,CAAC;IACrD,aAAa,EAAE,CAAC,6BAA6B,EAAE,uBAAuB,CAAC;IACvE,OAAO,EAAE,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;IACnE,sBAAsB,EAAE,CAAC,oCAAoC,CAAC;IAC9D,qBAAqB,EAAE;QACrB,4BAA4B;QAC5B,6BAA6B;KAC9B;IACD,qBAAqB,EAAE,CAAC,6BAA6B,CAAC;IACtD,WAAW,EAAE,CAAC,6BAA6B,CAAC;IAC5C,aAAa,EAAE,CAAC,uBAAuB,CAAC;IACxC,qBAAqB,EAAE,CAAC,6BAA6B,CAAC;IACtD,uBAAuB,EAAE,CAAC,+BAA+B,CAAC;IAC1D,YAAY,EAAE,CAAC,0BAA0B,CAAC;IAC1C,sBAAsB,EAAE,CAAC,8BAA8B,CAAC;IACxD,mBAAmB,EAAE,CAAC,8BAA8B,CAAC;IACrD,gBAAgB,EAAE;QAChB,4BAA4B;QAC5B,wCAAwC;KACzC;IACD,qBAAqB,EAAE,CAAC,gCAAgC,CAAC;IACzD,2BAA2B,EAAE,CAAC,mCAAmC,CAAC;IAClE,0BAA0B,EAAE;QAC1B,kCAAkC;QAClC,kCAAkC;KACnC;IACD,oBAAoB,EAAE;QACpB,4BAA4B;QAC5B,4BAA4B;KAC7B;CACF,CAAC;AAEF,gFAAgF;AAChF,6EAA6E;AAC7E,yDAAyD;AACzD,sDAAsD;AACtD,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,kFAAkF;AAClF,2DAA2D;AAE9C,QAAA,aAAa,GAA2B;IACnD,MAAM,EAAE,wCAAwC;IAChD,YAAY,EAAE,wCAAwC;IACtD,MAAM,EAAE,wCAAwC;IAChD,QAAQ,EAAE,wCAAwC;IAClD,QAAQ,EAAE,wCAAwC;CACnD,CAAC"}
|
|
@@ -13,5 +13,29 @@ export declare function loadFile(relativePath: string): string;
|
|
|
13
13
|
export declare function loadAllDocSections(): DocSection[];
|
|
14
14
|
export declare function loadApiSections(): Map<string, string>;
|
|
15
15
|
export declare function loadTopicFiles(files: string[]): string;
|
|
16
|
+
/**
|
|
17
|
+
* Versions that have a release-notes file, newest first.
|
|
18
|
+
*
|
|
19
|
+
* Derived by scanning docs/release-notes/ rather than hardcoded, so a new
|
|
20
|
+
* release becomes queryable as soon as its notes are bundled. The previous
|
|
21
|
+
* hardcoded list silently stopped at 3.3.8 and made every later release
|
|
22
|
+
* unreachable through get_release_notes.
|
|
23
|
+
*/
|
|
24
|
+
export declare function discoverReleaseVersions(): string[];
|
|
25
|
+
/**
|
|
26
|
+
* Versions with a "### Migrating to X" section in the README, newest first.
|
|
27
|
+
* Derived from the README so a new migration guide needs no code change.
|
|
28
|
+
*/
|
|
29
|
+
export declare function discoverMigrationVersions(): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Class/component names documented in docs/API_REFERENCE.md, in document order.
|
|
32
|
+
* Derived from the file's own headings, so newly documented types are
|
|
33
|
+
* immediately reachable through get_api_reference.
|
|
34
|
+
*/
|
|
35
|
+
export declare function discoverApiClassNames(): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Loads release notes for a version. `"latest"` resolves to the newest version
|
|
38
|
+
* actually present, rather than a hardcoded one that goes stale every release.
|
|
39
|
+
*/
|
|
16
40
|
export declare function loadReleaseNotes(version: string): string;
|
|
17
41
|
export declare function loadMigrationGuide(version: string): string;
|
package/dist/utils/doc-loader.js
CHANGED
|
@@ -38,6 +38,9 @@ exports.loadFile = loadFile;
|
|
|
38
38
|
exports.loadAllDocSections = loadAllDocSections;
|
|
39
39
|
exports.loadApiSections = loadApiSections;
|
|
40
40
|
exports.loadTopicFiles = loadTopicFiles;
|
|
41
|
+
exports.discoverReleaseVersions = discoverReleaseVersions;
|
|
42
|
+
exports.discoverMigrationVersions = discoverMigrationVersions;
|
|
43
|
+
exports.discoverApiClassNames = discoverApiClassNames;
|
|
41
44
|
exports.loadReleaseNotes = loadReleaseNotes;
|
|
42
45
|
exports.loadMigrationGuide = loadMigrationGuide;
|
|
43
46
|
const fs = __importStar(require("node:fs"));
|
|
@@ -45,6 +48,8 @@ const path = __importStar(require("node:path"));
|
|
|
45
48
|
let resolvedRoot = null;
|
|
46
49
|
let docSections = null;
|
|
47
50
|
let apiSections = null;
|
|
51
|
+
let releaseVersions = null;
|
|
52
|
+
let migrationVersions = null;
|
|
48
53
|
/**
|
|
49
54
|
* Resolves the root directory containing docs/, wiki/, and README.md.
|
|
50
55
|
*
|
|
@@ -210,9 +215,80 @@ function loadTopicFiles(files) {
|
|
|
210
215
|
}
|
|
211
216
|
return parts.join("\n\n");
|
|
212
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Compares two dot-separated versions numerically, newest first.
|
|
220
|
+
* Falls back to string comparison for any non-numeric component.
|
|
221
|
+
*/
|
|
222
|
+
function compareVersionsDesc(a, b) {
|
|
223
|
+
const pa = a.split(".");
|
|
224
|
+
const pb = b.split(".");
|
|
225
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
226
|
+
const na = Number(pa[i] ?? 0);
|
|
227
|
+
const nb = Number(pb[i] ?? 0);
|
|
228
|
+
if (Number.isNaN(na) || Number.isNaN(nb)) {
|
|
229
|
+
const cmp = (pb[i] ?? "").localeCompare(pa[i] ?? "");
|
|
230
|
+
if (cmp !== 0)
|
|
231
|
+
return cmp;
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
if (na !== nb)
|
|
235
|
+
return nb - na;
|
|
236
|
+
}
|
|
237
|
+
return 0;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Versions that have a release-notes file, newest first.
|
|
241
|
+
*
|
|
242
|
+
* Derived by scanning docs/release-notes/ rather than hardcoded, so a new
|
|
243
|
+
* release becomes queryable as soon as its notes are bundled. The previous
|
|
244
|
+
* hardcoded list silently stopped at 3.3.8 and made every later release
|
|
245
|
+
* unreachable through get_release_notes.
|
|
246
|
+
*/
|
|
247
|
+
function discoverReleaseVersions() {
|
|
248
|
+
if (releaseVersions)
|
|
249
|
+
return releaseVersions;
|
|
250
|
+
const versions = [];
|
|
251
|
+
for (const file of discoverFiles("docs/release-notes", "")) {
|
|
252
|
+
const match = path.basename(file).match(/^RELEASE_NOTES_v(.+)\.md$/);
|
|
253
|
+
if (match)
|
|
254
|
+
versions.push(match[1]);
|
|
255
|
+
}
|
|
256
|
+
releaseVersions = versions.sort(compareVersionsDesc);
|
|
257
|
+
return releaseVersions;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Versions with a "### Migrating to X" section in the README, newest first.
|
|
261
|
+
* Derived from the README so a new migration guide needs no code change.
|
|
262
|
+
*/
|
|
263
|
+
function discoverMigrationVersions() {
|
|
264
|
+
if (migrationVersions)
|
|
265
|
+
return migrationVersions;
|
|
266
|
+
const readme = loadFile("README.md");
|
|
267
|
+
const found = new Set();
|
|
268
|
+
for (const match of readme.matchAll(/^###\s+Migrating to\s+(\S+)\s*$/gm)) {
|
|
269
|
+
found.add(match[1]);
|
|
270
|
+
}
|
|
271
|
+
migrationVersions = Array.from(found).sort(compareVersionsDesc);
|
|
272
|
+
return migrationVersions;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Class/component names documented in docs/API_REFERENCE.md, in document order.
|
|
276
|
+
* Derived from the file's own headings, so newly documented types are
|
|
277
|
+
* immediately reachable through get_api_reference.
|
|
278
|
+
*/
|
|
279
|
+
function discoverApiClassNames() {
|
|
280
|
+
return Array.from(loadApiSections().keys());
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Loads release notes for a version. `"latest"` resolves to the newest version
|
|
284
|
+
* actually present, rather than a hardcoded one that goes stale every release.
|
|
285
|
+
*/
|
|
213
286
|
function loadReleaseNotes(version) {
|
|
214
287
|
if (version === "latest") {
|
|
215
|
-
|
|
288
|
+
const newest = discoverReleaseVersions()[0];
|
|
289
|
+
if (!newest)
|
|
290
|
+
return "";
|
|
291
|
+
version = newest;
|
|
216
292
|
}
|
|
217
293
|
return loadFile(`docs/release-notes/RELEASE_NOTES_v${version}.md`);
|
|
218
294
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-loader.js","sourceRoot":"","sources":["../../src/utils/doc-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"doc-loader.js","sourceRoot":"","sources":["../../src/utils/doc-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/templates.js
CHANGED
|
@@ -46,6 +46,12 @@ function generateConfigKotlin(o) {
|
|
|
46
46
|
: `"${types_js_1.TEST_AD_UNITS.app_open}"`;
|
|
47
47
|
const imports = [
|
|
48
48
|
"import android.app.Application",
|
|
49
|
+
"import android.content.pm.PackageManager",
|
|
50
|
+
"import android.os.Handler",
|
|
51
|
+
"import android.os.Looper",
|
|
52
|
+
"import com.google.android.libraries.ads.mobile.sdk.MobileAds",
|
|
53
|
+
"import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig",
|
|
54
|
+
"import com.i2hammad.admanagekit.admob.AppOpenManager",
|
|
49
55
|
"import com.i2hammad.admanagekit.config.AdManageKitConfig",
|
|
50
56
|
];
|
|
51
57
|
if (o.interstitial_strategy ||
|
|
@@ -54,16 +60,15 @@ function generateConfigKotlin(o) {
|
|
|
54
60
|
imports.push("import com.i2hammad.admanagekit.config.AdLoadingStrategy");
|
|
55
61
|
}
|
|
56
62
|
if (o.billing) {
|
|
57
|
-
imports.push("import com.i2hammad.admanagekit.
|
|
63
|
+
imports.push("import com.i2hammad.admanagekit.billing.AppPurchase");
|
|
64
|
+
imports.push("import com.i2hammad.admanagekit.billing.PurchaseItem");
|
|
58
65
|
imports.push("import com.i2hammad.admanagekit.billing.BillingPurchaseProvider");
|
|
66
|
+
imports.push("import com.i2hammad.admanagekit.core.BillingConfig");
|
|
59
67
|
}
|
|
60
|
-
|
|
61
|
-
imports.push("import com.i2hammad.admanagekit.admob.AppOpenManager");
|
|
62
|
-
}
|
|
63
|
-
return `${imports.join("\n")}
|
|
68
|
+
return `${imports.sort().join("\n")}
|
|
64
69
|
|
|
65
70
|
class MyApp : Application() {
|
|
66
|
-
private
|
|
71
|
+
private var appOpenManager: AppOpenManager? = null
|
|
67
72
|
|
|
68
73
|
override fun onCreate() {
|
|
69
74
|
super.onCreate()
|
|
@@ -74,13 +79,61 @@ ${configLines.join("\n")}
|
|
|
74
79
|
}
|
|
75
80
|
${o.billing
|
|
76
81
|
? `
|
|
77
|
-
|
|
78
|
-
BillingConfig.setPurchaseProvider(BillingPurchaseProvider())
|
|
82
|
+
initBilling()
|
|
79
83
|
`
|
|
80
84
|
: ""}
|
|
81
|
-
|
|
82
|
-
appOpenManager = AppOpenManager(this, ${appOpenUnit})
|
|
85
|
+
initAds()
|
|
83
86
|
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Since v4.2.0 AdManageKit runs on the Next-Gen Google Mobile Ads SDK, which
|
|
90
|
+
* removed the legacy SDK's silent lazy-init. MobileAds.initialize() must be
|
|
91
|
+
* called explicitly once before any ad request — AdManageKit does not do it
|
|
92
|
+
* for you, because it does not own your consent flow.
|
|
93
|
+
*/
|
|
94
|
+
private fun initAds() {
|
|
95
|
+
val config = InitializationConfig.Builder(readApplicationIdFromManifest()).build()
|
|
96
|
+
|
|
97
|
+
// initialize() is blocking, so keep it off the main thread or it can ANR.
|
|
98
|
+
Thread {
|
|
99
|
+
MobileAds.initialize(this, config)
|
|
100
|
+
|
|
101
|
+
// Construct AppOpenManager only after initialize() returns. It registers
|
|
102
|
+
// a lifecycle observer that can fire a load immediately, and the Next-Gen
|
|
103
|
+
// SDK rejects requests made before initialization completes.
|
|
104
|
+
Handler(Looper.getMainLooper()).post {
|
|
105
|
+
appOpenManager = AppOpenManager(this, ${appOpenUnit})
|
|
106
|
+
}
|
|
107
|
+
}.start()
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The Next-Gen SDK does not read the manifest tag automatically like the
|
|
112
|
+
* legacy SDK did, so the application id must be supplied explicitly.
|
|
113
|
+
*/
|
|
114
|
+
private fun readApplicationIdFromManifest(): String {
|
|
115
|
+
val appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
|
|
116
|
+
return appInfo.metaData.getString("com.google.android.gms.ads.APPLICATION_ID")
|
|
117
|
+
?: error("Missing com.google.android.gms.ads.APPLICATION_ID meta-data in AndroidManifest.xml")
|
|
118
|
+
}${o.billing
|
|
119
|
+
? `
|
|
120
|
+
|
|
121
|
+
private fun initBilling() {
|
|
122
|
+
// A library AAR is always compiled with BuildConfig.DEBUG = false, so the
|
|
123
|
+
// host app must inject its own build state. Call this BEFORE initBilling().
|
|
124
|
+
AppPurchase.getInstance().setDebugMode(BuildConfig.DEBUG)
|
|
125
|
+
|
|
126
|
+
val products = listOf(
|
|
127
|
+
PurchaseItem("remove_ads", AppPurchase.TYPE_IAP.PURCHASE, PurchaseItem.PurchaseCategory.REMOVE_ADS),
|
|
128
|
+
PurchaseItem("premium_monthly", AppPurchase.TYPE_IAP.SUBSCRIPTION),
|
|
129
|
+
PurchaseItem("premium_yearly", AppPurchase.TYPE_IAP.SUBSCRIPTION)
|
|
130
|
+
)
|
|
131
|
+
AppPurchase.getInstance().initBilling(this, products)
|
|
132
|
+
|
|
133
|
+
// Lets every ad component skip loading for paying users.
|
|
134
|
+
BillingConfig.setPurchaseProvider(BillingPurchaseProvider())
|
|
135
|
+
}`
|
|
136
|
+
: ""}
|
|
84
137
|
}`;
|
|
85
138
|
}
|
|
86
139
|
function generateConfigJava(o) {
|
|
@@ -101,10 +154,17 @@ function generateConfigJava(o) {
|
|
|
101
154
|
configLines.push(` AdManageKitConfig.INSTANCE.setNativeLoadingStrategy(AdLoadingStrategy.${o.native_strategy});`);
|
|
102
155
|
const appOpenUnit = o.app_open_ad_unit || types_js_1.TEST_AD_UNITS.app_open;
|
|
103
156
|
return `import android.app.Application;
|
|
157
|
+
import android.content.pm.PackageManager;
|
|
158
|
+
import android.os.Handler;
|
|
159
|
+
import android.os.Looper;
|
|
160
|
+
import java.util.Arrays;
|
|
161
|
+
import java.util.List;
|
|
162
|
+
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
|
|
163
|
+
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;
|
|
104
164
|
import com.i2hammad.admanagekit.config.AdManageKitConfig;
|
|
105
165
|
import com.i2hammad.admanagekit.config.AdLoadingStrategy;
|
|
106
166
|
import com.i2hammad.admanagekit.admob.AppOpenManager;
|
|
107
|
-
${o.billing ? "import com.i2hammad.admanagekit.
|
|
167
|
+
${o.billing ? "import com.i2hammad.admanagekit.billing.AppPurchase;\nimport com.i2hammad.admanagekit.billing.PurchaseItem;\nimport com.i2hammad.admanagekit.billing.BillingPurchaseProvider;\nimport com.i2hammad.admanagekit.core.BillingConfig;\n" : ""}
|
|
108
168
|
public class MyApp extends Application {
|
|
109
169
|
private AppOpenManager appOpenManager;
|
|
110
170
|
|
|
@@ -114,10 +174,67 @@ public class MyApp extends Application {
|
|
|
114
174
|
|
|
115
175
|
// Configure AdManageKit
|
|
116
176
|
${configLines.join("\n")}
|
|
117
|
-
${o.billing ? "\n
|
|
118
|
-
|
|
119
|
-
|
|
177
|
+
${o.billing ? "\n initBilling();\n" : ""}
|
|
178
|
+
initAds();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Since v4.2.0 AdManageKit runs on the Next-Gen Google Mobile Ads SDK, which
|
|
183
|
+
* removed the legacy SDK's silent lazy-init. MobileAds.initialize() must be
|
|
184
|
+
* called explicitly once before any ad request.
|
|
185
|
+
*/
|
|
186
|
+
private void initAds() {
|
|
187
|
+
InitializationConfig config =
|
|
188
|
+
new InitializationConfig.Builder(readApplicationIdFromManifest()).build();
|
|
189
|
+
|
|
190
|
+
// initialize() is blocking, so keep it off the main thread or it can ANR.
|
|
191
|
+
new Thread(() -> {
|
|
192
|
+
MobileAds.initialize(this, config);
|
|
193
|
+
|
|
194
|
+
// Construct AppOpenManager only after initialize() returns — it registers a
|
|
195
|
+
// lifecycle observer that can request an ad immediately, and the Next-Gen SDK
|
|
196
|
+
// rejects requests made before initialization completes.
|
|
197
|
+
new Handler(Looper.getMainLooper()).post(() ->
|
|
198
|
+
appOpenManager = new AppOpenManager(this, "${appOpenUnit}"));
|
|
199
|
+
}).start();
|
|
120
200
|
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* The Next-Gen SDK does not read the manifest tag automatically like the
|
|
204
|
+
* legacy SDK did, so the application id must be supplied explicitly.
|
|
205
|
+
*/
|
|
206
|
+
private String readApplicationIdFromManifest() {
|
|
207
|
+
try {
|
|
208
|
+
android.content.pm.ApplicationInfo info = getPackageManager()
|
|
209
|
+
.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
|
|
210
|
+
String id = info.metaData.getString("com.google.android.gms.ads.APPLICATION_ID");
|
|
211
|
+
if (id == null) {
|
|
212
|
+
throw new IllegalStateException(
|
|
213
|
+
"Missing com.google.android.gms.ads.APPLICATION_ID meta-data in AndroidManifest.xml");
|
|
214
|
+
}
|
|
215
|
+
return id;
|
|
216
|
+
} catch (PackageManager.NameNotFoundException e) {
|
|
217
|
+
throw new IllegalStateException(e);
|
|
218
|
+
}
|
|
219
|
+
}${o.billing
|
|
220
|
+
? `
|
|
221
|
+
|
|
222
|
+
private void initBilling() {
|
|
223
|
+
// A library AAR is always compiled with BuildConfig.DEBUG = false, so the
|
|
224
|
+
// host app must inject its own build state. Call this BEFORE initBilling().
|
|
225
|
+
AppPurchase.getInstance().setDebugMode(BuildConfig.DEBUG);
|
|
226
|
+
|
|
227
|
+
List<PurchaseItem> products = Arrays.asList(
|
|
228
|
+
new PurchaseItem("remove_ads", AppPurchase.TYPE_IAP.PURCHASE,
|
|
229
|
+
PurchaseItem.PurchaseCategory.REMOVE_ADS),
|
|
230
|
+
new PurchaseItem("premium_monthly", AppPurchase.TYPE_IAP.SUBSCRIPTION),
|
|
231
|
+
new PurchaseItem("premium_yearly", AppPurchase.TYPE_IAP.SUBSCRIPTION));
|
|
232
|
+
AppPurchase.getInstance().initBilling(this, products);
|
|
233
|
+
|
|
234
|
+
// Lets every ad component skip loading for paying users.
|
|
235
|
+
BillingConfig.INSTANCE.setPurchaseProvider(new BillingPurchaseProvider());
|
|
236
|
+
}`
|
|
237
|
+
: ""}
|
|
121
238
|
}`;
|
|
122
239
|
}
|
|
123
240
|
function generateAdIntegration(options) {
|
|
@@ -449,18 +566,24 @@ function generateBillingCode(options) {
|
|
|
449
566
|
return generateBillingPurchase();
|
|
450
567
|
case "subscribe":
|
|
451
568
|
return generateBillingSubscribe();
|
|
569
|
+
case "offers":
|
|
570
|
+
return generateBillingOffers();
|
|
452
571
|
case "consumable":
|
|
453
572
|
return generateBillingConsumable();
|
|
454
573
|
case "subscription_management":
|
|
455
574
|
return generateBillingSubscriptionMgmt();
|
|
575
|
+
case "account_hold":
|
|
576
|
+
return generateBillingAccountHold();
|
|
456
577
|
case "expiry_verification":
|
|
457
578
|
return generateBillingExpiryVerification();
|
|
458
579
|
case "complete":
|
|
459
580
|
return [
|
|
460
581
|
generateBillingSetup(options),
|
|
461
582
|
generateBillingPurchase(),
|
|
583
|
+
generateBillingOffers(),
|
|
462
584
|
generateBillingConsumable(),
|
|
463
585
|
generateBillingSubscriptionMgmt(),
|
|
586
|
+
generateBillingAccountHold(),
|
|
464
587
|
].join("\n\n// ---\n\n");
|
|
465
588
|
default:
|
|
466
589
|
return `// Unknown billing scenario: ${scenario}`;
|
|
@@ -487,6 +610,12 @@ function generateBillingSetup(o) {
|
|
|
487
610
|
})
|
|
488
611
|
.join(",\n");
|
|
489
612
|
return `import com.i2hammad.admanagekit.billing.*
|
|
613
|
+
import com.i2hammad.admanagekit.core.BillingConfig
|
|
614
|
+
|
|
615
|
+
// A library AAR is always compiled with BuildConfig.DEBUG = false, so the host
|
|
616
|
+
// app must inject its own build state. In debug builds this routes purchase()/
|
|
617
|
+
// subscribe() to the dev bottom sheet. Call this BEFORE initBilling().
|
|
618
|
+
AppPurchase.getInstance().setDebugMode(BuildConfig.DEBUG)
|
|
490
619
|
|
|
491
620
|
// Define products
|
|
492
621
|
val products = listOf(
|
|
@@ -497,12 +626,39 @@ ${productLines}
|
|
|
497
626
|
AppPurchase.getInstance().initBilling(application, products)
|
|
498
627
|
|
|
499
628
|
// Set up billing provider for ad suppression
|
|
500
|
-
BillingConfig.setPurchaseProvider(BillingPurchaseProvider())
|
|
629
|
+
BillingConfig.setPurchaseProvider(BillingPurchaseProvider())
|
|
630
|
+
|
|
631
|
+
// Optional but recommended: hashed identifiers Google uses for fraud detection.
|
|
632
|
+
// Never pass raw emails or user ids; max 64 characters.
|
|
633
|
+
AppPurchase.getInstance().setObfuscatedAccountId(sha256(userId))
|
|
634
|
+
|
|
635
|
+
// Diagnose an empty paywall — reports which product ids Play declined and why.
|
|
636
|
+
// Register BEFORE initBilling().
|
|
637
|
+
AppPurchase.getInstance().setProductDetailsListener(object : ProductDetailsListener {
|
|
638
|
+
override fun onProductDetailsLoaded(
|
|
639
|
+
productType: String,
|
|
640
|
+
loaded: List<ProductDetails>,
|
|
641
|
+
unfetched: List<UnfetchedProduct>,
|
|
642
|
+
) {
|
|
643
|
+
unfetched.forEach { Log.e("Billing", "\${it.productId}: status \${it.statusCode}") }
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
override fun onProductDetailsFailed(productType: String, responseCode: Int, debugMessage: String?) {
|
|
647
|
+
Log.e("Billing", "\$productType query failed: \$responseCode \$debugMessage")
|
|
648
|
+
}
|
|
649
|
+
})`;
|
|
501
650
|
}
|
|
502
651
|
function generateBillingPurchase() {
|
|
503
652
|
return `// Purchase a product
|
|
504
653
|
AppPurchase.getInstance().purchase(activity, "remove_ads")
|
|
505
654
|
|
|
655
|
+
// If the product has multiple offers (a launch discount, a rental, a
|
|
656
|
+
// limited-quantity drop), buy the specific one instead — see the
|
|
657
|
+
// "offers" scenario.
|
|
658
|
+
AppPurchase.getInstance().getBestOneTimeOffer("remove_ads")?.let { offer ->
|
|
659
|
+
AppPurchase.getInstance().purchase(activity, offer)
|
|
660
|
+
}
|
|
661
|
+
|
|
506
662
|
// Check purchase status
|
|
507
663
|
if (AppPurchase.getInstance().isPurchased()) {
|
|
508
664
|
// User has premium access
|
|
@@ -519,15 +675,115 @@ AppPurchase.getInstance().setPurchaseHistoryListener(object : PurchaseHistoryLis
|
|
|
519
675
|
})`;
|
|
520
676
|
}
|
|
521
677
|
function generateBillingSubscribe() {
|
|
522
|
-
return
|
|
523
|
-
|
|
678
|
+
return `val billing = AppPurchase.getInstance()
|
|
679
|
+
|
|
680
|
+
// Simple case — one offer on the product. The library picks the offer for you:
|
|
681
|
+
// the id configured as PurchaseItem.trialId, otherwise Play's LAST offer.
|
|
682
|
+
billing.subscribe(activity, "premium_monthly")
|
|
683
|
+
|
|
684
|
+
// If the product has more than one offer (base plan + free trial + intro offer),
|
|
685
|
+
// the line above can charge for a plan the user did not pick. Pass the offer
|
|
686
|
+
// explicitly instead — see the "offers" scenario for a full paywall.
|
|
687
|
+
val offers = billing.getOffers("premium_monthly")
|
|
688
|
+
billing.subscribe(activity, offers[selectedIndex])
|
|
524
689
|
|
|
525
690
|
// Check subscription state
|
|
526
|
-
|
|
527
|
-
when (state) {
|
|
691
|
+
when (billing.getSubscriptionState("premium_monthly")) {
|
|
528
692
|
SubscriptionState.ACTIVE -> showPremiumUI()
|
|
529
|
-
SubscriptionState.CANCELLED -> showRenewalPrompt()
|
|
693
|
+
SubscriptionState.CANCELLED -> showRenewalPrompt() // Still has access
|
|
694
|
+
SubscriptionState.ON_HOLD -> showFixPaymentPrompt() // Payment declined — no access
|
|
530
695
|
SubscriptionState.EXPIRED -> showSubscribeButton()
|
|
696
|
+
else -> showSubscribeButton()
|
|
697
|
+
}`;
|
|
698
|
+
}
|
|
699
|
+
function generateBillingOffers() {
|
|
700
|
+
return `val billing = AppPurchase.getInstance()
|
|
701
|
+
|
|
702
|
+
// A subscription product usually carries several offers — a base plan, a free
|
|
703
|
+
// trial, an introductory discount. Play returns only the ones THIS account is
|
|
704
|
+
// eligible for, so the list is already personalized.
|
|
705
|
+
for (offer in billing.getOffers("premium_monthly")) {
|
|
706
|
+
Log.d("IAP", "\${offer.basePlanId}/\${offer.offerId} " +
|
|
707
|
+
"trial=\${offer.isFreeTrial} intro=\${offer.introPrice} base=\${offer.basePrice}")
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
// Find a specific offer rather than relying on list order
|
|
711
|
+
billing.getIntroOffer("premium_monthly") // first with an intro price
|
|
712
|
+
billing.getTrialOffer("premium_monthly") // first with a free trial
|
|
713
|
+
billing.getOfferByBasePlanId("premium_yearly", "yearly") // by base plan id
|
|
714
|
+
billing.getOfferByTag("premium_yearly", "popular") // by Play Console offer tag
|
|
715
|
+
billing.getBestValueOffer("premium_yearly") // lowest cost per month
|
|
716
|
+
billing.getCheapestFirstCycleOffer("premium_yearly") // cheapest way in
|
|
717
|
+
|
|
718
|
+
// Render an offer without hand-parsing ProductDetails or ISO-8601 periods
|
|
719
|
+
val offer = billing.getBaseOffer("premium_yearly") ?: return
|
|
720
|
+
|
|
721
|
+
priceLabel.text = offer.basePrice // "\$59.99"
|
|
722
|
+
cycleLabel.text = BillingPeriod.formatOf(offer.billingPeriod) // "1 year"
|
|
723
|
+
perMonthLabel.text = AppPurchase.formatPrice(offer.pricePerMonthMicros, offer.currencyCode)
|
|
724
|
+
todayLabel.text = offer.firstCyclePrice // "Free", "\$1.99" or "\$59.99"
|
|
725
|
+
|
|
726
|
+
// "Save 50%" badge — compares BASE offers, so trial/intro phases don't distort it
|
|
727
|
+
val savings = billing.getSavingsPercent("premium_monthly", "premium_yearly")
|
|
728
|
+
savingsBadge.isVisible = savings > 0
|
|
729
|
+
savingsBadge.text = "Save \$savings%"
|
|
730
|
+
|
|
731
|
+
// Only promise a trial this account can actually claim, or Play charges immediately
|
|
732
|
+
subscribeButton.text = if (billing.isEligibleForFreeTrial("premium_monthly")) {
|
|
733
|
+
"Start free trial"
|
|
734
|
+
} else {
|
|
735
|
+
"Subscribe"
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
// Buy exactly the offer the user tapped
|
|
739
|
+
subscribeButton.setOnClickListener { billing.subscribe(activity, offer) }
|
|
740
|
+
|
|
741
|
+
// One-time products can carry multiple offers too (discounts, rentals,
|
|
742
|
+
// pre-orders, limited quantity)
|
|
743
|
+
billing.getBestOneTimeOffer("remove_ads")?.let { oneTime ->
|
|
744
|
+
price.text = oneTime.formattedPrice
|
|
745
|
+
badge.isVisible = oneTime.isDiscounted
|
|
746
|
+
badge.text = "-\${oneTime.effectiveDiscountPercent}%"
|
|
747
|
+
buyButton.isEnabled = !oneTime.isSoldOut && oneTime.isValidAt()
|
|
748
|
+
buyButton.setOnClickListener { billing.purchase(activity, oneTime) }
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
// NOTE: localize periods with BillingPeriod.parse(iso) and pair unit + count with
|
|
752
|
+
// your own plurals resources. BillingPeriod.formatOf() is English-only.`;
|
|
753
|
+
}
|
|
754
|
+
function generateBillingAccountHold() {
|
|
755
|
+
return `val billing = AppPurchase.getInstance()
|
|
756
|
+
|
|
757
|
+
// When Play cannot charge a subscriber, the subscription enters ACCOUNT HOLD.
|
|
758
|
+
// The purchase record still exists, but the user has NOT paid.
|
|
759
|
+
// Detected client-side since v4.4.0 — it used to need server-side verification.
|
|
760
|
+
if (billing.hasSubscriptionOnHold()) {
|
|
761
|
+
// Play shows the user an in-app flow to fix their payment method.
|
|
762
|
+
// Google recommends calling this on foreground entry for subscription apps.
|
|
763
|
+
billing.showInAppMessages(activity, object : InAppMessageListener {
|
|
764
|
+
override fun onSubscriptionRecovered(purchaseToken: String) {
|
|
765
|
+
// AppPurchase already refreshed its state — isPurchased() is correct here.
|
|
766
|
+
refreshPremiumUi()
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
override fun onNoActionNeeded() { }
|
|
770
|
+
})
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// Per-subscription check
|
|
774
|
+
val subscription = billing.getSubscription("premium_monthly")
|
|
775
|
+
if (subscription?.isSuspended == true) {
|
|
776
|
+
showFixPaymentPrompt()
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
// IMPORTANT: isSubscriptionActive() returns false during account hold, which is
|
|
780
|
+
// what Google requires — an on-hold user must not keep premium access. If your
|
|
781
|
+
// app deliberately keeps serving these users, check isSuspended() explicitly.
|
|
782
|
+
|
|
783
|
+
// A plan change the user started but has not paid for yet. The CURRENT plan
|
|
784
|
+
// remains the entitlement in force until it completes.
|
|
785
|
+
if (billing.hasPendingSubscriptionChange()) {
|
|
786
|
+
showPlanChangePendingBanner()
|
|
531
787
|
}`;
|
|
532
788
|
}
|
|
533
789
|
function generateBillingConsumable() {
|
|
@@ -545,27 +801,44 @@ AppPurchase.getInstance().setPurchaseHistoryListener(object : PurchaseHistoryLis
|
|
|
545
801
|
})`;
|
|
546
802
|
}
|
|
547
803
|
function generateBillingSubscriptionMgmt() {
|
|
548
|
-
return
|
|
549
|
-
|
|
550
|
-
|
|
804
|
+
return `val billing = AppPurchase.getInstance()
|
|
805
|
+
|
|
806
|
+
// Check subscription state
|
|
807
|
+
when (billing.getSubscriptionState("premium_monthly")) {
|
|
551
808
|
SubscriptionState.ACTIVE -> showPremiumUI()
|
|
552
|
-
SubscriptionState.CANCELLED -> showRenewalPrompt()
|
|
809
|
+
SubscriptionState.CANCELLED -> showRenewalPrompt() // Still has access until period ends
|
|
810
|
+
SubscriptionState.ON_HOLD -> showFixPaymentPrompt() // Payment declined — no access (v4.4.0+)
|
|
553
811
|
SubscriptionState.EXPIRED -> showSubscribeButton()
|
|
812
|
+
else -> showSubscribeButton()
|
|
554
813
|
}
|
|
555
814
|
|
|
556
815
|
// Upgrade subscription
|
|
557
|
-
|
|
816
|
+
billing.upgradeSubscription(activity, "premium_yearly")
|
|
558
817
|
|
|
559
818
|
// Downgrade subscription
|
|
560
|
-
|
|
819
|
+
billing.downgradeSubscription(activity, "premium_basic")
|
|
561
820
|
|
|
562
821
|
// Full control with proration mode
|
|
563
|
-
|
|
822
|
+
billing.changeSubscription(
|
|
564
823
|
activity,
|
|
565
824
|
"premium_monthly", // from
|
|
566
825
|
"premium_yearly", // to
|
|
567
826
|
SubscriptionReplacementMode.CHARGE_PRORATED_PRICE
|
|
568
|
-
)
|
|
827
|
+
)
|
|
828
|
+
|
|
829
|
+
// Upgrade onto a SPECIFIC offer of the new plan. The overloads above let the
|
|
830
|
+
// library resolve the offer, which may not be the one the user selected.
|
|
831
|
+
val target = billing.getOfferByBasePlanId("premium_yearly", "yearly")
|
|
832
|
+
val current = billing.getSubscription("premium_monthly")
|
|
833
|
+
if (target != null && current != null) {
|
|
834
|
+
billing.updateSubscription(
|
|
835
|
+
activity,
|
|
836
|
+
"premium_yearly",
|
|
837
|
+
target.offerToken,
|
|
838
|
+
current.purchaseToken,
|
|
839
|
+
AppPurchase.SubscriptionReplacementMode.CHARGE_PRORATED_PRICE
|
|
840
|
+
)
|
|
841
|
+
}`;
|
|
569
842
|
}
|
|
570
843
|
function generateBillingExpiryVerification() {
|
|
571
844
|
return `// Set up server-side verification callback
|
|
@@ -593,21 +866,65 @@ AppPurchase.getInstance().verifySubscription("premium_monthly",
|
|
|
593
866
|
)`;
|
|
594
867
|
}
|
|
595
868
|
function generateBillingJava(o) {
|
|
596
|
-
return `//
|
|
869
|
+
return `// ─── Setup ───────────────────────────────────────────────────
|
|
870
|
+
// A library AAR is always compiled with BuildConfig.DEBUG = false, so the host
|
|
871
|
+
// app must inject its own build state. Call this BEFORE initBilling().
|
|
872
|
+
AppPurchase.getInstance().setDebugMode(BuildConfig.DEBUG);
|
|
873
|
+
|
|
597
874
|
List<PurchaseItem> products = Arrays.asList(
|
|
598
|
-
new PurchaseItem("remove_ads", TYPE_IAP.PURCHASE,
|
|
599
|
-
|
|
875
|
+
new PurchaseItem("remove_ads", AppPurchase.TYPE_IAP.PURCHASE,
|
|
876
|
+
PurchaseItem.PurchaseCategory.REMOVE_ADS),
|
|
877
|
+
new PurchaseItem("premium_monthly", AppPurchase.TYPE_IAP.SUBSCRIPTION),
|
|
878
|
+
new PurchaseItem("premium_yearly", AppPurchase.TYPE_IAP.SUBSCRIPTION)
|
|
600
879
|
);
|
|
601
880
|
|
|
602
881
|
AppPurchase.getInstance().initBilling(getApplication(), products);
|
|
603
882
|
BillingConfig.INSTANCE.setPurchaseProvider(new BillingPurchaseProvider());
|
|
604
883
|
|
|
605
|
-
// Purchase
|
|
884
|
+
// ─── Purchase ────────────────────────────────────────────────
|
|
606
885
|
AppPurchase.getInstance().purchase(activity, "remove_ads");
|
|
607
886
|
|
|
608
|
-
// Check status
|
|
609
887
|
if (AppPurchase.getInstance().isPurchased()) {
|
|
610
888
|
// User has premium access
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
// ─── Offers ──────────────────────────────────────────────────
|
|
892
|
+
// A subscription usually has several offers. subscribe(activity, id) resolves
|
|
893
|
+
// the offer itself and may not pick the one the user tapped — pass it directly.
|
|
894
|
+
AppPurchase billing = AppPurchase.getInstance();
|
|
895
|
+
List<OfferInfo> offers = billing.getOffers("premium_monthly");
|
|
896
|
+
billing.subscribe(activity, offers.get(selectedIndex));
|
|
897
|
+
|
|
898
|
+
OfferInfo base = billing.getBaseOffer("premium_yearly");
|
|
899
|
+
if (base != null) {
|
|
900
|
+
priceLabel.setText(base.getBasePrice());
|
|
901
|
+
cycleLabel.setText(BillingPeriod.formatOf(base.getBillingPeriod()));
|
|
902
|
+
perMonthLabel.setText(
|
|
903
|
+
AppPurchase.formatPrice(base.getPricePerMonthMicros(), base.getCurrencyCode()));
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
int savings = billing.getSavingsPercent("premium_monthly", "premium_yearly");
|
|
907
|
+
if (savings > 0) {
|
|
908
|
+
savingsBadge.setText("Save " + savings + "%");
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
// Only promise a trial this account can actually claim
|
|
912
|
+
subscribeButton.setText(
|
|
913
|
+
billing.isEligibleForFreeTrial("premium_monthly") ? "Start free trial" : "Subscribe");
|
|
914
|
+
|
|
915
|
+
// ─── Account hold ────────────────────────────────────────────
|
|
916
|
+
// isSubscriptionActive() returns false during account hold — the user's payment
|
|
917
|
+
// was declined and they must not keep premium access.
|
|
918
|
+
if (billing.hasSubscriptionOnHold()) {
|
|
919
|
+
billing.showInAppMessages(activity, new InAppMessageListener() {
|
|
920
|
+
@Override
|
|
921
|
+
public void onSubscriptionRecovered(@NonNull String purchaseToken) {
|
|
922
|
+
refreshPremiumUi();
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
@Override
|
|
926
|
+
public void onNoActionNeeded() { }
|
|
927
|
+
});
|
|
611
928
|
}`;
|
|
612
929
|
}
|
|
613
930
|
function generateComposeCode(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
|