- refactor: android init connection
Used Kotlin apply for cleaner initialization of billingClient. Introduced context ?: return for null-safety with context. Merged repetitive code into the updateConnectionStatus method to avoid duplication. Improved the handling of the alreadyFinished flag to ensure it is only set once and at the appropriate time. Streamlined the error and success handling for clarity.
- Migrate android billingClient to 6.0.1
- Erroneous duplicate item (#441) - Remove extra
introductoryPricePaymentModeIOS
- Fixed consumable products reading on Android (#439)
- chore(deps): migrate internal packages to recent
http: ^1.1.0 meta: ^1.10.0 platform: ^3.1.3
- chore: migrate example project to recent flutter version, 3.16.0-0.3.pre
- Update actions/stale action to v8 by @renovate in hyochan#414
- Fix - wrong casting by @BrunoFSimon in hyochan#427
- Fixed consumable product purchase on Android by @33-Elephants in hyochan#420
- @BrunoFSimon made their first contribution in hyochan#427
- @33-Elephants made their first contribution in hyochan#420
Full Changelog: https://github.com/dooboolab-community/flutter_inapp_purchase/compare/5.4.1...5.4.2
- Fixed concurrency issue on iOS. by @OctavianLfrd in hyochan#413
- Fixed wrong casting in checkSubscribed method by @kleeb in hyochan#368
- Upgrade to billing 5.1 (reverse compatible) by @SamBergeron in hyochan#392
- Refactor java to kotlin, add showInAppMessageAndroid by @offline-first in hyochan#365
- @offline-first made their first contribution in hyochan#365
Full Changelog: https://github.com/dooboolab/flutter_inapp_purchase/compare/5.2.0...5.3.0
Bugfix #356
Run on UiThread and few others (#328)
-
Related #272
-
The main difference is a new MethodResultWrapper class that wraps both the result and the channel. onMethodCall() now immediately saves this wrapped result-channel to a field and only uses that later to set both the result and to send back info on the channel. I did this in both Google and Amazon but I can't test the Amazon one.
-
Included the plugin registration differences.
-
Midified suggested in one of the issues that initConnection, endConnection and consumeAllItems shouldn't be accessors. This is very much so, property accessors are not supposed to do work and have side effects, just return a value. Now three new functions are suggested and marked the old ones deprecated.
Fourth, EnumUtil.getValueString() is not really necessary, we have describeEnum() in the Flutter engine just for this purpose.
Upgrade android billing client to 4.0.0
(#326)
Remove orderId
in Purchase
- This is duplicate of
transactionId
.
Support for Amazon devices with Google Play sideloaded (#313)
- Add iOS promo codes (#325)
- Use http client in validateReceiptIos (#322)
- Amazon
getPrice
directly withoiut formatting (#316)
- Fix plugin exception for
requestProductWithQuantityIOS
#306
- Replaced obfuscatedAccountIdAndroid with obfuscatedAccountId in request purchase method #299
- Add AndroidProrationMode values #273
- Support null safety #275
- The dart side requires "introductoryPriceCyclesAndroid" to be a int #268
platform
dep version>=2.0.0 <4.0.0
- Support flutter v2 #265
- Upgrade android billing client to
2.1.0
from3.0.0
. - Removed
deveoperId
andaccountId
when requestingpurchase
orsubscription
inandroid
. - Added
obfuscatedAccountIdAndroid
andobfuscatedProfileIdAndroid
when requestingpurchase
orsubscription
inandroid
. - Removed
developerPayload
inandroid
. - Added
purchaseTokenAndroid
as an optional parameter torequestPurchase
andrequestSubscription
.
Republishing since sourcode seems not merged correctly.
- Bugfix IAPItem deserialization #212
- Add introductoryPriceNumberIOS #214
- Fix iOS promotional offers #220
- Implement
endConnection
method to declaratively finish observer in iOS. - Remove
addTransactionObserver
in IAPPromotionObserver.m for dup observer problems. - Automatically startPromotionObserver in
initConnection
for iOS.
- Fix ios failed purchase handling problem in 11.4+ #176
- Fix dart side expression warning #169.
- Fix wrong introductory price number of periods #164.
- Trigger purchaseUpdated callback when iap purchased #165.
- Renamed
finishTransactionIOS
argumentpurchaseToken
totransactionId
.
finishTransaction
parameter changes topurchasedItem
frompurchaseToken
.- Update android billing client to
2.1.0
from2.0.3
.
- [bugfix] Fix double call of result reply on connection init #126
- [bugfix] Fix plugin throws exceptions with flutter v1.10.7 beta #117
- [bugfix] Decode response code for connection updates stream #114
- [bugfix] Fix typo in
consumePurchase
#115
- use ConnectionResult as type for connection stream, fix controller creation #112
- Resolve #106 by not sending
result.error
to the listener. Created use_conectionSubscription
.
- Fixed minor typo when generating string with
toString
. Resolve #110.
- Pass android exception to flutter side.
- Android receipt validation api upgrade to
v3
.
- Resolve #102. Fluter seems to only sends strings between platforms.
- Resolve #101.
- Resolve #100.
- Resolve #99.
- Send
purchase-error
with purchases returns null.
- Renamed invoked parameters non-platform specific.
- Add
deveoperId
andaccountId
when requestingpurchase
orsubscription
inandroid
. Find out more inrequestPurchase
andrequestSubscription
.
- Correctly mock invoke method and return results #94
- Seperate long
example
code toexample
readme.
- Properly set return type
PurchaseResult
of when finishing transaction.
- Removed deprecated note in the
readme
. - Make the previous tests work in
travis
. - Documentation on
readme
for breaking features. - Abstracts
finishTransaction
.acknowledgePurchaseAndroid
,consumePurchaseAndroid
,finishTransactionIOS
.
[Android]
- Completely remove prepare.
- Upgrade billingclient to 2.0.3 which is currently recent in Sep 15 2019.
- Remove [IInAppBillingService] binding since billingClient has its own functionalities.
- Add [DoobooUtils] and add
getBillingResponseData
that visualizes erorr codes better. buyProduct
no more return asyn result. It rather relies on thepurchaseUpdatedListener
.- Add feature method
acknowledgePurchaseAndroid
- Implement
acknowledgePurchaseAndroid
. - Renamed
consumePurchase
toconsumePurchaseAndroid
in dart side. - Update test codes.
- Implement
- Renamed methods
buyProduct
torequestPurchase
.buySubscription
torequestSubscription
.
[iOS]
- Implment features in new releases.
- enforce to
finishTransaction
after purchases. - Work with
purchaseUpdated
andpurchaseError
listener as in android. - Feature set from
react-native-iap v3
. - Should call finish transaction in every purchase request.
- Add
IAPPromotionObserver
cocoa touch file - Convert dic to json string before invoking purchase-updated
- Add
getPromotedProductIOS
andrequestPromotedProductIOS
methods - Implement clearTransaction for ios
- Include
purchasePromoted
stream that listens toiap-promoted-product
.
- enforce to
- Add
DEPRECATION
note. Please use in_app_purchase.
- 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.
- Improved getPurchaseHistory's speed 44% faster #68.
- Fixed receipt validation param for
android
. - Updated
http
package. - Implemented new method
getAppStoreInitiatedProducts
.- Handling of iOS method
paymentQueue:shouldAddStorePayment:forProduct:
- Has no effect on Android.
- Handling of iOS method
- Fixed issue with method
buyProductWithoutFinishTransaction
for iOS, was not getting the productId. - Fixed issue with
toString
method of classIAPItem
, was printing incorrect values. - Fixes for #44. Unsafe getting
originalJson
when restoring item andAndroid
. - Use dictionaryWithObjectsAndKeys in NSDictionary to fetch product values. This will prevent from NSInvalidArgumentException in ios which rarely occurs.
- Fixed wrong npe in
android
whengetAvailablePurchases
.
- Only parse
orderId
when exists inAndroid
to prevent crashing. - Add additional success purchase listener in
iOS
. Related #54
- Implemented receiptValidation for both android and ios.
- In Android, you need own backend to get your
accessToken
.
- In Android, you need own backend to get your
- Addition of Amazon In-App Purchases.
- Prevent nil element exception when getting products.
- Prevent nil exception in ios when fetching products.
- Fix broken images on pub.
- Added missing introductory fields in ios.
- convert dynamic objects to PurchasedItems.
- Fix return type for getAvailablePurchases().
- Fix ios null value if optional operator.
- Update readme.
- Fixed failing when there is no introductory price in ios.
- Fixed
checkSubscribed
that can interrupt billing lifecycle.
- Major code refactoring by lukepighetti. Unify PlatformException, cleanup new, DateTime instead of string.
- Fix getSubscription json encoding problem in
ios
.
- Avoid crashing on android caused by IllegalStateException.
- Avoid possible memory leak in android by deleting static declaration of activity and context.
- Few types fixed.
- Fixed error parsing IAPItem.
- Fixed error parsing purchaseHistory.
- Fix crashing on error.
- Give better error message on ios.
- Code migration.
- Support subscription period.
- There was parameter renaming in
0.5.0
to identify different parameters sent from the device. Please check the readme.
- Fixed subscription return types.
- Well formatted code.
- Code formatted
- Updated missing data types
- Upgraded readme for ease of usage.
- Enabled strong mode.
- Moved dynamic return type away and instead give
PurchasedItem
.
- Quickly fixed purchase bug out there in issue. Need much more improvement currently.
- Migrated packages from FlutterInApp to FlutterInAppPurchase because pub won't get it.
- Initial release of beta
- Moved code from react-native-iap