You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a release candidate for v6.0.0 with significant breaking changes. Please test thoroughly before using in production.
6
-
7
-
### Package Changes
8
-
9
-
-**Package**: Changed package name from `dev.hyochan.flutterinapppurchase` to `dev.hyo.flutterinapppurchase`
10
-
-**Documentation**: Moved from `docs/` to `doc/` directory for pub.dev convention
11
-
-**Version**: First release candidate for v6.0.0 major version
12
-
13
-
### Breaking Changes
14
-
15
-
-**iOS**: Now requires iOS 11.0+ (previously 8.0+)
16
-
-**iOS**: StoreKit 2 is now used by default on iOS 15.0+ devices
17
-
-**Android**: Updated to Billing Client v8.0.0 (from v6.0.1)
18
-
-**API**: Complete refactoring of class structure and enum naming conventions
19
-
-`ErrorCode` enum values changed from `E_UNKNOWN` to `eUnknown` (lowerCamelCase)
20
-
-`PeriodUnitIOS` enum values changed from `DAY` to `day` (lowerCamelCase)
21
-
- Platform-specific classes moved to mixins (`FlutterInappPurchaseIOS`, `FlutterInappPurchaseAndroid`)
22
-
- Channel access changed from static to instance member
3
+
## 6.0.0
23
4
24
-
### New Features
5
+
### Major Release - Open IAP Specification Compliance
25
6
26
-
-**iOS**: Full StoreKit 2 support for iOS 15.0+
27
-
- Automatic transaction verification
28
-
- Better subscription management
29
-
- Improved error handling
30
-
- No receipt validation needed for StoreKit 2
31
-
-**iOS**: Automatic fallback to StoreKit 1 for iOS 11.0-14.x
32
-
-**Android**: Support for all Billing Client v8 features
33
-
-**Architecture**: New mixin-based architecture for better code organization
34
-
- Platform-specific code separated into `modules/ios.dart` and `modules/android.dart`
35
-
- Improved testability and maintainability
7
+
This major release redesigns the API to fully comply with the [Open IAP](https://www.openiap.dev) specification, providing a standardized interface for in-app purchases across platforms.
36
8
37
-
### Migration Guide
9
+
### What is Open IAP?
38
10
39
-
- Update all `ErrorCode` references:
40
-
```dart
41
-
// Before
42
-
ErrorCode.E_USER_CANCELLED
43
-
// After
44
-
ErrorCode.eUserCancelled
45
-
```
46
-
- Update channel access in tests:
47
-
```dart
48
-
// Before
49
-
FlutterInappPurchase.channel
50
-
// After
51
-
FlutterInappPurchase.instance.channel
52
-
```
53
-
- StoreKit 2 will be used automatically on supported devices
54
-
- StoreKit Configuration files (.storekit) work with StoreKit 2 on iOS 15+
11
+
[Open IAP](https://www.openiap.dev) is an open standard for implementing in-app purchases consistently across different platforms and frameworks. By following this specification, flutter_inapp_purchase now offers:
55
12
56
-
## 6.0.0
13
+
- Consistent API design patterns
14
+
- Standardized error codes and handling
15
+
- Unified purchase flow across iOS and Android
16
+
- Better interoperability with other IAP libraries
57
17
58
18
### Breaking Changes
59
19
60
-
-**iOS**: Now requires iOS 11.0+ (previously 8.0+)
61
-
-**iOS**: StoreKit 2 is now used by default on iOS 15.0+ devices
62
-
-**Android**: Updated to Billing Client v8.0.0 (from v6.0.1)
63
-
-**API**: Complete refactoring of class structure and enum naming conventions
64
-
-`ErrorCode` enum values changed from `E_UNKNOWN` to `eUnknown` (lowerCamelCase)
65
-
-`PeriodUnitIOS` enum values changed from `DAY` to `day` (lowerCamelCase)
66
-
- Platform-specific classes moved to mixins (`FlutterInappPurchaseIOS`, `FlutterInappPurchaseAndroid`)
67
-
- Channel access changed from static to instance member
20
+
-**Architecture**: Complete redesign following Open IAP specification
21
+
- Removed `useIap` hook and `IapProvider` - use `FlutterInappPurchase.instance` directly
22
+
- Removed `flutter_hooks` dependency
23
+
- Simplified API with direct instance access pattern
24
+
-**iOS**: Now requires iOS 11.0+ with StoreKit 2 support (iOS 15.0+)
- Unified error handling with standardized error codes
68
30
69
31
### New Features
70
32
71
-
-**iOS**: Full StoreKit 2 support for iOS 15.0+
72
-
- Automatic transaction verification
73
-
- Better subscription management
74
-
- Improved error handling
75
-
- No receipt validation needed for StoreKit 2
76
-
-**iOS**: Automatic fallback to StoreKit 1 for iOS 11.0-14.x
77
-
-**Android**: Support for all Billing Client v8 features
78
-
-**Architecture**: New mixin-based architecture for better code organization
79
-
- Platform-specific code separated into `modules/ios.dart` and `modules/android.dart`
80
-
- Improved testability and maintainability
33
+
-**Open IAP Compliance**: Full implementation of the Open IAP specification
34
+
-**Improved Error Handling**: Standardized error codes across platforms
35
+
-**Event-based Architecture**: New listeners for purchase updates and errors
36
+
-**StoreKit 2 Support**: Automatic transaction verification on iOS 15.0+
37
+
-**Better Type Safety**: Enhanced TypeScript-like type definitions
81
38
82
39
### Migration Guide
83
40
84
-
- Update all `ErrorCode` references:
85
-
```dart
86
-
// Before
87
-
ErrorCode.E_USER_CANCELLED
88
-
// After
89
-
ErrorCode.eUserCancelled
90
-
```
91
-
- Update channel access in tests:
92
-
```dart
93
-
// Before
94
-
FlutterInappPurchase.channel
95
-
// After
96
-
FlutterInappPurchase.instance.channel
97
-
```
98
-
- StoreKit 2 will be used automatically on supported devices
99
-
- StoreKit Configuration files (.storekit) work with StoreKit 2 on iOS 15+
41
+
```dart
42
+
// Before (5.x)
43
+
final iap = useIap();
44
+
await iap.initialize();
45
+
46
+
// After (6.0)
47
+
final iap = FlutterInappPurchase.instance;
48
+
await iap.initConnection();
49
+
```
50
+
51
+
For complete migration details, see the [documentation](https://flutter-inapp-purchase.hyo.dev).
100
52
101
53
## 5.6.2
102
54
103
-
- fix: removed references to deprecated v1 Android embedding by @moodstubos in https://github.com/hyochan/flutter_inapp_purchase/pull/497
55
+
- fix: removed references to deprecated v1 Android embedding by @moodstubos in <https://github.com/hyochan/flutter_inapp_purchase/pull/497>
104
56
105
57
## 5.6.1
106
58
107
-
- Erroneous duplicate item by @deakjahn in https://github.com/hyochan/flutter_inapp_purchase/pull/441
108
-
- Fixed consumable products reading on Android by @33-Elephants in https://github.com/hyochan/flutter_inapp_purchase/pull/439
109
-
- fix: Support AGP8 namespace by @dev-yakuza in https://github.com/hyochan/flutter_inapp_purchase/pull/467
59
+
- Erroneous duplicate item by @deakjahn in <https://github.com/hyochan/flutter_inapp_purchase/pull/441>
60
+
- Fixed consumable products reading on Android by @33-Elephants in <https://github.com/hyochan/flutter_inapp_purchase/pull/439>
61
+
- fix: Support AGP8 namespace by @dev-yakuza in <https://github.com/hyochan/flutter_inapp_purchase/pull/467>
110
62
111
63
## 5.6.0
112
64
113
65
- refactor: android init connection
114
-
```
66
+
67
+
```text
115
68
Used Kotlin apply for cleaner initialization of billingClient.
116
69
Introduced context ?: return for null-safety with context.
117
70
Merged repetitive code into the updateConnectionStatus method to avoid duplication.
118
71
Improved the handling of the alreadyFinished flag to ensure it is only set once and at the appropriate time.
119
72
Streamlined the error and success handling for clarity.
- Fixed concurrency issue on iOS. by @OctavianLfrd in https://github.com/hyochan/flutter_inapp_purchase/pull/413
109
+
- Fixed concurrency issue on iOS. by @OctavianLfrd in <https://github.com/hyochan/flutter_inapp_purchase/pull/413>
154
110
155
111
## 5.4.0
156
112
157
-
- Fixed wrong casting in checkSubscribed method by @kleeb in https://github.com/hyochan/flutter_inapp_purchase/pull/368
158
-
- Upgrade to billing 5.1 (reverse compatible) by @SamBergeron in https://github.com/hyochan/flutter_inapp_purchase/pull/392
113
+
- Fixed wrong casting in checkSubscribed method by @kleeb in <https://github.com/hyochan/flutter_inapp_purchase/pull/368>
114
+
- Upgrade to billing 5.1 (reverse compatible) by @SamBergeron in <https://github.com/hyochan/flutter_inapp_purchase/pull/392>
159
115
160
116
## 5.3.0
161
117
162
118
## What's Changed
163
119
164
-
- Refactor java to kotlin, add showInAppMessageAndroid by @offline-first in https://github.com/hyochan/flutter_inapp_purchase/pull/365
120
+
- Refactor java to kotlin, add showInAppMessageAndroid by @offline-first in <https://github.com/hyochan/flutter_inapp_purchase/pull/365>
165
121
166
122
## New Contributors
167
123
168
-
-@offline-first made their first contribution in https://github.com/hyochan/flutter_inapp_purchase/pull/365
124
+
-@offline-first made their first contribution in <https://github.com/hyochan/flutter_inapp_purchase/pull/365>
@@ -402,7 +358,7 @@ Republishing since sourcode seems not merged correctly.
402
358
403
359
- Breaking change. Migrate from the deprecated original Android Support Library to AndroidX. This shouldn't result in any functional changes, but it requires any Android apps using this plugin to also migrate to Android X if they're using the original support library. [Android's Migrating to Android X Guide](https://developer.android.com/jetpack/androidx/migrate).
@@ -417,8 +373,8 @@ Republishing since sourcode seems not merged correctly.
417
373
- Use dictionaryWithObjectsAndKeys in NSDictionary to fetch product values. This will prevent from NSInvalidArgumentException in ios which rarely occurs.
418
374
- Fixed wrong npe in `android` when `getAvailablePurchases`.
419
375
420
-
* Only parse `orderId` when exists in `Android` to prevent crashing.
421
-
* Add additional success purchase listener in `iOS`. Related [#54](https://github.com/hyochan/flutter_inapp_purchase/issues/54)
376
+
- Only parse `orderId` when exists in `Android` to prevent crashing.
377
+
- Add additional success purchase listener in `iOS`. Related [#54](https://github.com/hyochan/flutter_inapp_purchase/issues/54)
0 commit comments