Skip to content

Commit 83e3d55

Browse files
committed
docs: update documentation to remove deprecated methods and align with expo-iap style
- Replace deprecated initialize() with initConnection() - Remove requestSubscription() and unify with requestPurchase() - Update Next Steps sections in iOS/Android setup docs - Delete testing guide as requested - Rename initPlatformState() to initIAP() for clarity
1 parent 24ede37 commit 83e3d55

File tree

8 files changed

+141
-982
lines changed

8 files changed

+141
-982
lines changed

docs/docs/getting-started/android-setup.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -351,11 +351,9 @@ FlutterInappPurchase.purchaseUpdated.listen((purchase) async {
351351

352352
## Next Steps
353353

354-
Once Android setup is complete:
355-
356-
1. **[Basic Implementation](/docs/guides/basic-setup)** - Start implementing purchases
357-
2. **[Testing Guide](/docs/guides/testing)** - Test your implementation thoroughly
358-
3. **[Security Best Practices](/docs/guides/security)** - Secure your implementation
354+
- [Learn about iOS setup](./ios-setup)
355+
- [Explore getting started guide](./quickstart)
356+
- [Understand error codes](../api/error-codes)
359357

360358
---
361359

docs/docs/getting-started/ios-setup.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -331,11 +331,9 @@ await FlutterInappPurchase.instance.requestPurchase(
331331

332332
## Next Steps
333333

334-
Once iOS setup is complete:
335-
336-
1. **[Basic Implementation](/docs/guides/basic-setup)** - Start implementing purchases
337-
2. **[Testing Guide](/docs/guides/testing)** - Test your implementation thoroughly
338-
3. **[App Store Guidelines](/docs/guides/app-store-guidelines)** - Ensure compliance
334+
- [Learn about Android setup](./android-setup)
335+
- [Explore getting started guide](./quickstart)
336+
- [Understand error codes](../api/error-codes)
339337

340338
---
341339

docs/docs/getting-started/quickstart.md

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class _SimpleStoreState extends State<SimpleStore> {
4242
@override
4343
void initState() {
4444
super.initState();
45-
initPlatformState();
45+
initIAP();
4646
}
4747
4848
@override
@@ -53,10 +53,10 @@ class _SimpleStoreState extends State<SimpleStore> {
5353
}
5454
5555
// Initialize the plugin
56-
Future<void> initPlatformState() async {
56+
Future<void> initIAP() async {
5757
// Initialize connection
58-
var result = await FlutterInappPurchase.instance.initialize();
59-
print('IAP initialized: $result');
58+
await FlutterInappPurchase.instance.initConnection();
59+
print('IAP connection initialized');
6060
6161
// Set up purchase listeners
6262
_purchaseUpdatedSubscription =
@@ -147,7 +147,13 @@ class _SimpleStoreState extends State<SimpleStore> {
147147
// Request a purchase
148148
Future<void> _requestPurchase(String productId) async {
149149
try {
150-
await FlutterInappPurchase.instance.requestPurchase(productId);
150+
await FlutterInappPurchase.instance.requestPurchase(
151+
request: RequestPurchase(
152+
ios: RequestPurchaseIOS(sku: productId),
153+
android: RequestPurchaseAndroid(skus: [productId]),
154+
),
155+
type: PurchaseType.inapp,
156+
);
151157
} catch (e) {
152158
_showError('Purchase failed: $e');
153159
}
@@ -156,7 +162,13 @@ class _SimpleStoreState extends State<SimpleStore> {
156162
// Request a subscription
157163
Future<void> _requestSubscription(String productId) async {
158164
try {
159-
await FlutterInappPurchase.instance.requestSubscription(productId);
165+
await FlutterInappPurchase.instance.requestPurchase(
166+
request: RequestPurchase(
167+
ios: RequestPurchaseIOS(sku: productId),
168+
android: RequestPurchaseAndroid(skus: [productId]),
169+
),
170+
type: PurchaseType.subs,
171+
);
160172
} catch (e) {
161173
_showError('Subscription failed: $e');
162174
}
@@ -280,10 +292,10 @@ class _SimpleStoreState extends State<SimpleStore> {
280292

281293
### 1. Initialization
282294

283-
Always initialize the plugin before using any other methods:
295+
Always initialize the connection before using any other methods:
284296

285297
```dart
286-
await FlutterInappPurchase.instance.initialize();
298+
await FlutterInappPurchase.instance.initConnection();
287299
```
288300

289301
### 2. Loading Products
@@ -316,6 +328,15 @@ FlutterInappPurchase.purchaseUpdated.listen((productItem) {
316328
FlutterInappPurchase.purchaseError.listen((error) {
317329
// Handle error
318330
});
331+
332+
// Request a purchase
333+
await FlutterInappPurchase.instance.requestPurchase(
334+
request: RequestPurchase(
335+
ios: RequestPurchaseIOS(sku: 'product_id'),
336+
android: RequestPurchaseAndroid(skus: ['product_id']),
337+
),
338+
type: PurchaseType.inapp, // or PurchaseType.subs for subscriptions
339+
);
319340
```
320341

321342
### 4. Platform Differences

docs/docs/getting-started/setup-android.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,6 @@ try {
232232

233233
## Next Steps
234234

235-
- [Quick Start](./quickstart) - Implement your first purchase
236-
- [Purchase Implementation](../guides/purchases) - Detailed purchase flow
237-
- [Testing Guide](../guides/testing) - Comprehensive testing strategies
235+
- [Learn about iOS setup](./setup-ios)
236+
- [Explore getting started guide](./quickstart)
237+
- [Understand error codes](../api/error-codes)

docs/docs/getting-started/setup-ios.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,6 @@ validateReceipt(receiptBody);
161161

162162
## Next Steps
163163

164-
- [Android Setup](./setup-android) - Configure Google Play Console
165-
- [Quick Start](./quickstart) - Implement your first purchase
166-
- [Testing Guide](../guides/testing) - Comprehensive testing strategies
164+
- [Learn about Android setup](./setup-android)
165+
- [Explore getting started guide](./quickstart)
166+
- [Understand error codes](../api/error-codes)

docs/docs/guides/subscriptions.md

Lines changed: 73 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,15 @@ class SubscriptionManager {
8282
```dart
8383
Future<void> purchaseSubscription(String subscriptionId) async {
8484
try {
85-
await FlutterInappPurchase.instance.requestSubscription(
86-
subscriptionId,
87-
obfuscatedAccountIdAndroid: await _getUserId(),
85+
await FlutterInappPurchase.instance.requestPurchase(
86+
request: RequestPurchase(
87+
ios: RequestPurchaseIOS(sku: subscriptionId),
88+
android: RequestPurchaseAndroid(
89+
skus: [subscriptionId],
90+
obfuscatedAccountIdAndroid: await _getUserId(),
91+
),
92+
),
93+
type: PurchaseType.subs,
8894
);
8995
9096
// Result will be delivered via purchaseUpdated stream
@@ -109,18 +115,30 @@ Future<void> purchaseSubscriptionAdvanced({
109115
// Android subscription upgrade/downgrade
110116
final currentToken = await _getCurrentSubscriptionToken(upgradeFromId);
111117
112-
await FlutterInappPurchase.instance.requestSubscription(
113-
subscriptionId,
114-
purchaseTokenAndroid: currentToken,
115-
prorationModeAndroid: prorationMode ??
116-
AndroidProrationMode.IMMEDIATE_AND_CHARGE_PRORATED_PRICE,
117-
obfuscatedAccountIdAndroid: await _getUserId(),
118+
await FlutterInappPurchase.instance.requestPurchase(
119+
request: RequestPurchase(
120+
ios: RequestPurchaseIOS(sku: subscriptionId),
121+
android: RequestPurchaseAndroid(
122+
skus: [subscriptionId],
123+
purchaseTokenAndroid: currentToken,
124+
replacementModeAndroid: prorationMode ??
125+
AndroidProrationMode.IMMEDIATE_AND_CHARGE_PRORATED_PRICE,
126+
obfuscatedAccountIdAndroid: await _getUserId(),
127+
),
128+
),
129+
type: PurchaseType.subs,
118130
);
119131
} else {
120132
// New subscription or iOS
121-
await FlutterInappPurchase.instance.requestSubscription(
122-
subscriptionId,
123-
obfuscatedAccountIdAndroid: await _getUserId(),
133+
await FlutterInappPurchase.instance.requestPurchase(
134+
request: RequestPurchase(
135+
ios: RequestPurchaseIOS(sku: subscriptionId),
136+
android: RequestPurchaseAndroid(
137+
skus: [subscriptionId],
138+
obfuscatedAccountIdAndroid: await _getUserId(),
139+
),
140+
),
141+
type: PurchaseType.subs,
124142
);
125143
}
126144
} catch (e) {
@@ -192,17 +210,29 @@ class SubscriptionChangeHandler {
192210
final currentToken = await _getCurrentSubscriptionToken(fromProductId);
193211
194212
if (currentToken != null) {
195-
await FlutterInappPurchase.instance.requestSubscription(
196-
toProductId,
197-
purchaseTokenAndroid: currentToken,
198-
prorationModeAndroid: AndroidProrationMode.IMMEDIATE_AND_CHARGE_PRORATED_PRICE,
213+
await FlutterInappPurchase.instance.requestPurchase(
214+
request: RequestPurchase(
215+
ios: RequestPurchaseIOS(sku: toProductId),
216+
android: RequestPurchaseAndroid(
217+
skus: [toProductId],
218+
purchaseTokenAndroid: currentToken,
219+
replacementModeAndroid: AndroidProrationMode.IMMEDIATE_AND_CHARGE_PRORATED_PRICE,
220+
),
221+
),
222+
type: PurchaseType.subs,
199223
);
200224
} else {
201225
throw Exception('Current subscription not found');
202226
}
203227
} else {
204228
// iOS handles this automatically through subscription groups
205-
await FlutterInappPurchase.instance.requestSubscription(toProductId);
229+
await FlutterInappPurchase.instance.requestPurchase(
230+
request: RequestPurchase(
231+
ios: RequestPurchaseIOS(sku: toProductId),
232+
android: RequestPurchaseAndroid(skus: [toProductId]),
233+
),
234+
type: PurchaseType.subs,
235+
);
206236
}
207237
} catch (e) {
208238
print('Subscription upgrade failed: $e');
@@ -484,7 +514,13 @@ class IOSSubscriptionHandler {
484514
Future<void> handleSubscriptionGroup(String newSubscriptionId) async {
485515
// iOS automatically manages subscription groups
486516
// Users can only have one active subscription per group
487-
await FlutterInappPurchase.instance.requestSubscription(newSubscriptionId);
517+
await FlutterInappPurchase.instance.requestPurchase(
518+
request: RequestPurchase(
519+
ios: RequestPurchaseIOS(sku: newSubscriptionId),
520+
android: RequestPurchaseAndroid(skus: [newSubscriptionId]),
521+
),
522+
type: PurchaseType.subs,
523+
);
488524
}
489525
490526
// Handle promotional offers
@@ -524,9 +560,15 @@ class AndroidSubscriptionHandler {
524560
required String subscriptionId,
525561
required int offerIndex,
526562
}) async {
527-
await FlutterInappPurchase.instance.requestSubscription(
528-
subscriptionId,
529-
offerTokenIndex: offerIndex,
563+
await FlutterInappPurchase.instance.requestPurchase(
564+
request: RequestPurchase(
565+
ios: RequestPurchaseIOS(sku: subscriptionId),
566+
android: RequestPurchaseAndroid(
567+
skus: [subscriptionId],
568+
subscriptionOffers: [{offerToken: offerIndex.toString()}],
569+
),
570+
),
571+
type: PurchaseType.subs,
530572
);
531573
}
532574
@@ -539,10 +581,16 @@ class AndroidSubscriptionHandler {
539581
final oldToken = await _getCurrentSubscriptionToken(oldSubscriptionId);
540582
541583
if (oldToken != null) {
542-
await FlutterInappPurchase.instance.requestSubscription(
543-
newSubscriptionId,
544-
purchaseTokenAndroid: oldToken,
545-
prorationModeAndroid: prorationMode,
584+
await FlutterInappPurchase.instance.requestPurchase(
585+
request: RequestPurchase(
586+
ios: RequestPurchaseIOS(sku: newSubscriptionId),
587+
android: RequestPurchaseAndroid(
588+
skus: [newSubscriptionId],
589+
purchaseTokenAndroid: oldToken,
590+
replacementModeAndroid: prorationMode,
591+
),
592+
),
593+
type: PurchaseType.subs,
546594
);
547595
}
548596
}

0 commit comments

Comments
 (0)