- 3. PendingPurchaseUpdateAndroid for Upgrades/Downgrades
+ 3. PendingPurchaseUpdateAndroid for
+ Upgrades/Downgrades
-
- Track pending subscription plan changes that take effect at the end of the current billing period.
+
+ Track pending subscription plan changes that take effect at the
+ end of the current billing period.
{`type PendingPurchaseUpdateAndroid {
products: [String!]! # New product IDs user is switching to
purchaseToken: String! # Token for the pending transaction
}`}
-
@@ -182,36 +362,88 @@ product.priceFormatStyle.locale.currencyCode`}
element: (
- š
openiap-gql v1.3.16 / openiap-apple v1.3.14 - ExternalPurchaseCustomLink Support (iOS 18.1+)
+ š
openiap-gql v1.3.16 / openiap-apple v1.3.14 -
+ ExternalPurchaseCustomLink Support (iOS 18.1+)
-
- Added full support for Apple's ExternalPurchaseCustomLink API (iOS 18.1+) for apps using custom external purchase links with token-based reporting.
+
+ Added full support for Apple's{' '}
+ ExternalPurchaseCustomLink API (iOS 18.1+) for apps
+ using custom external purchase links with token-based reporting.
1. New APIs
-
- isEligibleForExternalPurchaseCustomLinkIOS() - Check if app can use ExternalPurchaseCustomLink API
- getExternalPurchaseCustomLinkTokenIOS(tokenType) - Get token for reporting to Apple's External Purchase Server API
- showExternalPurchaseCustomLinkNoticeIOS(noticeType) - Show CustomLink-specific disclosure notice sheet
+
+ -
+
isEligibleForExternalPurchaseCustomLinkIOS() -
+ Check if app can use ExternalPurchaseCustomLink API
+
+ -
+
getExternalPurchaseCustomLinkTokenIOS(tokenType) -
+ Get token for reporting to Apple's External Purchase Server API
+
+ -
+
showExternalPurchaseCustomLinkNoticeIOS(noticeType){' '}
+ - Show CustomLink-specific disclosure notice sheet
+
2. New Types
-
- ExternalPurchaseCustomLinkTokenTypeIOS - Token types: acquisition, services
- ExternalPurchaseCustomLinkNoticeTypeIOS - Notice types: browser
- ExternalPurchaseCustomLinkTokenResultIOS - Token result with token and error
- ExternalPurchaseCustomLinkNoticeResultIOS - Notice result with continued and error
+
+ -
+
ExternalPurchaseCustomLinkTokenTypeIOS - Token
+ types: acquisition, services
+
+ -
+
ExternalPurchaseCustomLinkNoticeTypeIOS - Notice
+ types: browser
+
+ -
+
ExternalPurchaseCustomLinkTokenResultIOS - Token
+ result with token and error
+
+ -
+
ExternalPurchaseCustomLinkNoticeResultIOS - Notice
+ result with continued and error
+
-
3. Improved presentExternalPurchaseNoticeSheetIOS()
-
- Now returns externalPurchaseToken field when user continues. This token is required for reporting transactions to Apple's External Purchase Server API.
+
+ 3. Improved presentExternalPurchaseNoticeSheetIOS()
+
+
+ Now returns externalPurchaseToken field when user
+ continues. This token is required for reporting transactions to
+ Apple's External Purchase Server API.
{`// Before
result.result // "continue" or "dismissed"
@@ -225,18 +457,72 @@ result.error // optional error`}
4. API Comparison
-
- ExternalPurchase (17.4+): Basic external purchase notice | ExternalPurchaseCustomLink (18.1+): Custom links with token-based reporting
+
+ ExternalPurchase (17.4+): Basic external purchase
+ notice | ExternalPurchaseCustomLink (18.1+): Custom
+ links with token-based reporting
- References
-
@@ -249,27 +535,90 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.15 / openiap-google v1.3.27 / openiap-apple v1.3.13 - Bug Fix
+ š
openiap-gql v1.3.15 / openiap-google v1.3.27 / openiap-apple
+ v1.3.13 - Bug Fix
-
- Fixed incorrect replacementModeConstant mapping in applySubscriptionProductReplacementParams. The function was using values from the legacy SubscriptionUpdateParams.ReplacementMode API instead of the new SubscriptionProductReplacementParams.ReplacementMode API (Billing Library 8.1.0+). Issue: #71
+
+ Fixed incorrect replacementModeConstant mapping in{' '}
+ applySubscriptionProductReplacementParams. The function
+ was using values from the legacy{' '}
+ SubscriptionUpdateParams.ReplacementMode API instead of
+ the new{' '}
+ SubscriptionProductReplacementParams.ReplacementMode{' '}
+ API (Billing Library 8.1.0+). Issue:{' '}
+
+ #71
+
Mode Value Changes
-
- CHARGE_FULL_PRICE: 5 ā 4
- DEFERRED: 6 ā 5
- KEEP_EXISTING: 7 ā 6
+
+ -
+
CHARGE_FULL_PRICE: 5 ā 4
+
+ -
+
DEFERRED: 6 ā 5
+
+ -
+
KEEP_EXISTING: 7 ā 6
+
- References
-
@@ -282,37 +631,103 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.14 / openiap-google v1.3.25 / openiap-apple v1.3.13 - Breaking Changes & Bug Fixes
+ š
openiap-gql v1.3.14 / openiap-google v1.3.25 / openiap-apple
+ v1.3.13 - Breaking Changes & Bug Fixes
-
- Breaking changes for iOS subscription props, bug fixes for Android displayPrice, and Objective-C bridge updates.
+
+ Breaking changes for iOS subscription props, bug fixes for Android
+ displayPrice, and Objective-C bridge updates.
-
1. iOS - Subscription-Only Props Cleanup (Breaking Change)
-
- Removed subscription-specific fields from RequestPurchaseIosProps. These fields now only exist in RequestSubscriptionIosProps.
+
+ 1. iOS - Subscription-Only Props Cleanup (Breaking Change)
+
+
+ Removed subscription-specific fields from{' '}
+ RequestPurchaseIosProps. These fields now only exist
+ in RequestSubscriptionIosProps.
-
- introductoryOfferEligibility - Removed
- promotionalOfferJWS - Removed
- winBackOffer - Removed
+
+ -
+
introductoryOfferEligibility - Removed
+
+ -
+
promotionalOfferJWS - Removed
+
+ -
+
winBackOffer - Removed
+
- Migration: Use requestSubscription() API.
+
+ Migration: Use requestSubscription() API.
+
-
3. Android - Fix displayPrice for Subscriptions with Free Trials
-
- Fixed displayPrice returning "Free" or "$0.00" instead of actual base/recurring price.
+
+ 3. Android - Fix displayPrice for Subscriptions with
+ Free Trials
+
+
+ Fixed displayPrice returning "Free" or "$0.00"
+ instead of actual base/recurring price.
{`// Before (bug): displayPrice = "Free", price = 0.0
// After (fixed): displayPrice = "$9.99", price = 9.99
@@ -320,17 +735,58 @@ result.error // optional error`}
-
4. Apple v1.3.13 - Objective-C Bridge Updates
-
- Updated OpenIapModule+ObjC.swift to expose new Swift async functions to Objective-C. Critical for kmp-iap. See Objective-C Bridge Documentation.
+
+ 4. Apple v1.3.13 - Objective-C Bridge Updates
+
+
+ Updated OpenIapModule+ObjC.swift to expose new Swift
+ async functions to Objective-C. Critical for kmp-iap. See{' '}
+
+ Objective-C Bridge Documentation
+
+ .
- References
-
@@ -343,67 +799,198 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.13 / openiap-google v1.3.24 / openiap-apple v1.3.11 - Platform API Gap Analysis
+ š
openiap-gql v1.3.13 / openiap-google v1.3.24 / openiap-apple
+ v1.3.11 - Platform API Gap Analysis
-
- New iOS win-back offers, JWS promotional offers, and Android product status codes.
+
+ New iOS win-back offers, JWS promotional offers, and Android product
+ status codes.
-
1. iOS - Win-Back Offers (iOS 18+)
-
- Added support for win-back offers to re-engage churned subscribers.
+
+ 1. iOS - Win-Back Offers (iOS 18+)
+
+
+ Added support for{' '}
+
+ win-back offers
+ {' '}
+ to re-engage churned subscribers.
-
- winBackOffer - New field in purchase props
- WinBackOfferInputIOS - Input type with offerId field
- SubscriptionOfferTypeIOS.WinBack - New enum value
+
+ -
+
winBackOffer - New field in purchase props
+
+ -
+
WinBackOfferInputIOS - Input type with{' '}
+ offerId field
+
+ -
+
SubscriptionOfferTypeIOS.WinBack - New enum value
+
-
2. iOS - JWS Promotional Offers (iOS 15+, WWDC 2025)
-
- New signature format using compact JWS string for promotional offers. Back-deployed to iOS 15. Requires Xcode 16.4+.
+
+ 2. iOS - JWS Promotional Offers (iOS 15+, WWDC 2025)
+
+
+ New signature format using compact JWS string for promotional
+ offers. Back-deployed to iOS 15. Requires Xcode 16.4+.
-
- promotionalOfferJWS - New field in purchase props
- PromotionalOfferJWSInputIOS - Input type with offerId and jws fields
+
+ -
+
promotionalOfferJWS - New field in purchase props
+
+ -
+
PromotionalOfferJWSInputIOS - Input type with{' '}
+ offerId and jws fields
+
-
3. iOS - Introductory Offer Eligibility Override (iOS 15+, WWDC 2025)
-
- introductoryOfferEligibility - Override system eligibility check. Set true/false/nil for system default. Requires Xcode 16.4+.
+
+ 3. iOS - Introductory Offer Eligibility Override (iOS 15+, WWDC
+ 2025)
+
+
+ introductoryOfferEligibility - Override system
+ eligibility check. Set true/false/
+ nil for system default. Requires Xcode 16.4+.
-
4. Android - Product Status Codes (Billing 8.0+)
-
- Product-level status codes indicating why products couldn't be fetched.
+
+ 4. Android - Product Status Codes (Billing 8.0+)
+
+
+ Product-level status codes indicating why products couldn't be
+ fetched.
-
- ProductStatusAndroid - Enum: Ok, NotFound, NoOffersAvailable, Unknown
- productStatusAndroid - New field on ProductAndroid
+
+ -
+
ProductStatusAndroid - Enum: Ok,{' '}
+ NotFound, NoOffersAvailable,{' '}
+ Unknown
+
+ -
+
productStatusAndroid - New field on{' '}
+ ProductAndroid
+
-
5. Android - Auto Service Reconnection
-
- enableAutoServiceReconnection() is now always enabled internally since OpenIAP uses Billing Library 8.3.0+.
+
+ 5. Android - Auto Service Reconnection
+
+
+ enableAutoServiceReconnection() is now always enabled
+ internally since OpenIAP uses Billing Library 8.3.0+.
- References
-
@@ -416,63 +1003,174 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.12 / openiap-google v1.3.22 / openiap-apple v1.3.10 - Standardized Offer Types
+ š
openiap-gql v1.3.12 / openiap-google v1.3.22 / openiap-apple
+ v1.3.10 - Standardized Offer Types
-
- Introduced standardized DiscountOffer and SubscriptionOffer types for unified handling across iOS and Android.
+
+ Introduced standardized DiscountOffer and{' '}
+ SubscriptionOffer types for unified handling across iOS
+ and Android.
-
1. DiscountOffer (One-time products)
-
+
+ 1. DiscountOffer (One-time products)
+
+
- Cross-platform type for one-time purchase discounts
- - Android fields:
offerTokenAndroid, fullPriceMicrosAndroid, percentageDiscountAndroid
- - Replaces deprecated
ProductAndroidOneTimePurchaseOfferDetail
+ -
+ Android fields:
offerTokenAndroid,{' '}
+ fullPriceMicrosAndroid,{' '}
+ percentageDiscountAndroid
+
+ -
+ Replaces deprecated{' '}
+
ProductAndroidOneTimePurchaseOfferDetail
+
-
2. SubscriptionOffer
-
- - Cross-platform type for subscription offers (introductory, promotional)
- - Includes
paymentMode: FreeTrial, PayAsYouGo, PayUpFront
- - Replaces deprecated
ProductSubscriptionAndroidOfferDetails, DiscountOfferIOS, DiscountIOS
+
+ 2. SubscriptionOffer
+
+
+ -
+ Cross-platform type for subscription offers (introductory,
+ promotional)
+
+ -
+ Includes
paymentMode: FreeTrial, PayAsYouGo,
+ PayUpFront
+
+ -
+ Replaces deprecated{' '}
+
ProductSubscriptionAndroidOfferDetails,{' '}
+ DiscountOfferIOS, DiscountIOS
+
-
3. New Fields on Product Types
-
- discountOffers: [DiscountOffer!] - One-time product discounts
- subscriptionOffers: [SubscriptionOffer!] - Subscription offers
+
+ 3. New Fields on Product Types
+
+
+ -
+
discountOffers: [DiscountOffer!] - One-time product
+ discounts
+
+ -
+
subscriptionOffers: [SubscriptionOffer!] -
+ Subscription offers
+
-
4. PaymentMode Logic Fix (Android)
-
+
+ 4. PaymentMode Logic Fix (Android)
+
+
- Zero price ā FreeTrial (regardless of recurrenceMode)
- NON_RECURRING (3) with paid ā PayUpFront
- - FINITE_RECURRING (2) / INFINITE_RECURRING (1) with paid ā PayAsYouGo
+ -
+ FINITE_RECURRING (2) / INFINITE_RECURRING (1) with paid ā
+ PayAsYouGo
+
5. Deprecated Types
-
- ProductAndroidOneTimePurchaseOfferDetail ā DiscountOffer
- ProductSubscriptionAndroidOfferDetails ā SubscriptionOffer
- oneTimePurchaseOfferDetailsAndroid ā discountOffers
- subscriptionOfferDetailsAndroid ā subscriptionOffers
+
+ -
+
+ ProductAndroidOneTimePurchaseOfferDetail
+ {' '}
+ ā DiscountOffer
+
+ -
+
+ ProductSubscriptionAndroidOfferDetails
+ {' '}
+ ā SubscriptionOffer
+
+ -
+
+ oneTimePurchaseOfferDetailsAndroid
+ {' '}
+ ā discountOffers
+
+ -
+
+ subscriptionOfferDetailsAndroid
+ {' '}
+ ā subscriptionOffers
+
- References
-
@@ -485,50 +1183,153 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.11 / openiap-google v1.3.21 / openiap-apple v1.3.9 - PurchaseState Cleanup
+ š
openiap-gql v1.3.11 / openiap-google v1.3.21 / openiap-apple
+ v1.3.9 - PurchaseState Cleanup
-
- Simplified PurchaseState enum and deprecated AlternativeBillingModeAndroid in favor of BillingProgramAndroid.
+
+ Simplified PurchaseState enum and deprecated
+ AlternativeBillingModeAndroid in favor of BillingProgramAndroid.
-
1. PurchaseState Simplified
-
- Removed unused Failed, Restored, Deferred states. Now: Pending, Purchased, Unknown
+
+ 1. PurchaseState Simplified
+
+
+ Removed unused Failed, Restored,{' '}
+ Deferred states. Now: Pending,{' '}
+ Purchased, Unknown
-
- Failed - Platforms return errors instead
- Restored - Returns as Purchased state
- Deferred - StoreKit 2 has no transaction state; Android uses Pending
+
+ -
+
Failed - Platforms return errors instead
+
+ -
+
Restored - Returns as Purchased state
+
+ -
+
Deferred - StoreKit 2 has no transaction state;
+ Android uses Pending
+
-
2. API Consolidation - BillingProgramAndroid
-
- Deprecated AlternativeBillingModeAndroid in favor of unified BillingProgramAndroid enum.
+
+ 2. API Consolidation - BillingProgramAndroid
+
+
+ Deprecated AlternativeBillingModeAndroid in favor of
+ unified BillingProgramAndroid enum.
-
- BillingProgramAndroid.USER_CHOICE_BILLING - New enum value (7.0+)
- AlternativeBillingModeAndroid - Deprecated
- InitConnectionConfig.alternativeBillingModeAndroid - Deprecated
+
+ -
+
BillingProgramAndroid.USER_CHOICE_BILLING - New
+ enum value (7.0+)
+
+ -
+
+ AlternativeBillingModeAndroid
+ {' '}
+ - Deprecated
+
+ -
+
+
+ InitConnectionConfig.alternativeBillingModeAndroid
+
+ {' '}
+ - Deprecated
+
3. Migration
-
- alternativeBillingModeAndroid: USER_CHOICE ā enableBillingProgramAndroid: USER_CHOICE_BILLING
- alternativeBillingModeAndroid: ALTERNATIVE_ONLY ā enableBillingProgramAndroid: EXTERNAL_OFFER
+
+ -
+
alternativeBillingModeAndroid: USER_CHOICE ā{' '}
+ enableBillingProgramAndroid: USER_CHOICE_BILLING
+
+ -
+
alternativeBillingModeAndroid: ALTERNATIVE_ONLY ā{' '}
+ enableBillingProgramAndroid: EXTERNAL_OFFER
+
- References
-
@@ -541,45 +1342,134 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.10 / openiap-google v1.3.19 / openiap-apple v1.3.8 - Google Play Billing 8.3.0 External Payments
+ š
openiap-gql v1.3.10 / openiap-google v1.3.19 / openiap-apple
+ v1.3.8 -{' '}
+
+ Google Play Billing 8.3.0 External Payments
+
-
- InitConnectionConfig enhancement, auto connection management for iOS, and External Payments program support.
+
+ InitConnectionConfig enhancement, auto connection management for
+ iOS, and External Payments program support.
-
1. GQL v1.3.10 - InitConnectionConfig Enhancement
-
- Added enableBillingProgramAndroid: BillingProgramAndroid field for easier billing program setup during initConnection().
+
+ 1. GQL v1.3.10 - InitConnectionConfig Enhancement
+
+
+ Added{' '}
+ enableBillingProgramAndroid: BillingProgramAndroid{' '}
+ field for easier billing program setup during{' '}
+ initConnection().
-
2. Apple v1.3.8 - Auto Connection Management
-
- All API methods now automatically call initConnection() internally. No need to manually call it before using any API. Backward compatible.
+
+ 2. Apple v1.3.8 - Auto Connection Management
+
+
+ All API methods now automatically call{' '}
+ initConnection() internally. No need to manually call
+ it before using any API. Backward compatible.
-
3. Google v1.3.19 - External Payments Program (Japan Only)
-
- Billing Library 8.3.0 introduces side-by-side choice between Google Play Billing and developer's external payment.
+
+ 3. Google v1.3.19 - External Payments Program (Japan Only)
+
+
+ Billing Library 8.3.0 introduces side-by-side choice between
+ Google Play Billing and developer's external payment.
-
- BillingProgramAndroid.EXTERNAL_PAYMENTS - New billing program type
- DeveloperBillingOptionParamsAndroid - Configure external payment option
- DeveloperProvidedBillingDetailsAndroid - Contains externalTransactionToken
- IapEvent.DeveloperProvidedBillingAndroid - New event
+
+ -
+
BillingProgramAndroid.EXTERNAL_PAYMENTS - New
+ billing program type
+
+ -
+
DeveloperBillingOptionParamsAndroid - Configure
+ external payment option
+
+ -
+
DeveloperProvidedBillingDetailsAndroid - Contains
+ externalTransactionToken
+
+ -
+
IapEvent.DeveloperProvidedBillingAndroid - New
+ event
+
- References
-
@@ -593,38 +1483,125 @@ result.error // optional error`}
element: (
- š
openiap-google v1.3.16 - Google Play Billing 8.2.1
+ š
openiap-google v1.3.16 -{' '}
+
+ Google Play Billing 8.2.1
+
-
- Upgraded from 8.1.0 to 8.2.1 with new Billing Programs API. Skipped 8.2.0 due to bugs in isBillingProgramAvailableAsync and createBillingProgramReportingDetailsAsync.
+
+ Upgraded from 8.1.0 to 8.2.1 with new Billing Programs API. Skipped
+ 8.2.0 due to bugs in isBillingProgramAvailableAsync and{' '}
+ createBillingProgramReportingDetailsAsync.
1. New APIs
-
- enableBillingProgram() - Setup BillingClient for billing programs
- isBillingProgramAvailableAsync() - Determine user eligibility
- createBillingProgramReportingDetailsAsync() - Create external transaction token
- launchExternalLink() - Initiate external link
+
+ -
+
enableBillingProgram() - Setup BillingClient for
+ billing programs
+
+ -
+
isBillingProgramAvailableAsync() - Determine user
+ eligibility
+
+ -
+
createBillingProgramReportingDetailsAsync() -
+ Create external transaction token
+
+ -
+
launchExternalLink() - Initiate external link
+
2. Deprecated APIs
-
- enableExternalOffer() ā enableBillingProgram(BillingProgramAndroid.ExternalOffer)
- isExternalOfferAvailableAsync() ā isBillingProgramAvailable()
- createExternalOfferReportingDetailsAsync() ā createBillingProgramReportingDetails()
- showExternalOfferInformationDialog() ā launchExternalLink()
+
+ -
+
+ enableExternalOffer()
+ {' '}
+ ā{' '}
+
+ enableBillingProgram(BillingProgramAndroid.ExternalOffer)
+
+
+ -
+
+ isExternalOfferAvailableAsync()
+ {' '}
+ ā isBillingProgramAvailable()
+
+ -
+
+ createExternalOfferReportingDetailsAsync()
+ {' '}
+ ā createBillingProgramReportingDetails()
+
+ -
+
+ showExternalOfferInformationDialog()
+ {' '}
+ ā launchExternalLink()
+
- References
-
@@ -641,14 +1618,36 @@ result.error // optional error`}
š
openiap-gql v1.3.8 - Kotlin Null-Safe Casting
-
- Fixed potential TypeCastException in generated Kotlin types by using safe casts (as?) instead of unsafe casts (as).
+
+ Fixed potential TypeCastException in generated Kotlin
+ types by using safe casts (as?) instead of unsafe casts
+ (as).
-
- - Lists now use
mapNotNull with safe element casting
- - Non-nullable fields provide sensible defaults (empty string, false, 0, emptyList)
- - Prevents crashes when JSON keys are missing or contain unexpected null values
+
+ -
+ Lists now use
mapNotNull with safe element casting
+
+ -
+ Non-nullable fields provide sensible defaults (empty string,
+ false, 0, emptyList)
+
+ -
+ Prevents crashes when JSON keys are missing or contain unexpected
+ null values
+
),
@@ -661,32 +1660,79 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.7 / openiap-apple v1.3.7 / openiap-google v1.3.15 - Advanced Commerce Data
+ š
openiap-gql v1.3.7 / openiap-apple v1.3.7 / openiap-google
+ v1.3.15 - Advanced Commerce Data
-
- Added support for StoreKit 2's Product.PurchaseOption.custom API to pass attribution data during purchases.
+
+ Added support for{' '}
+
+ StoreKit 2's Product.PurchaseOption.custom API
+ {' '}
+ to pass attribution data during purchases.
-
1. advancedCommerceData Field
-
- - New optional field in
RequestPurchaseIosProps and RequestSubscriptionIosProps
- - Use cases: Campaign attribution, affiliate marketing, promotional code tracking
+
+ 1. advancedCommerceData Field
+
+
+ -
+ New optional field in
RequestPurchaseIosProps and{' '}
+ RequestSubscriptionIosProps
+
+ -
+ Use cases: Campaign attribution, affiliate marketing,
+ promotional code tracking
+
-
2. Deprecated requestPurchaseOnPromotedProductIOS()
-
- In StoreKit 2, use promotedProductListenerIOS + requestPurchase() directly.
+
+ 2. Deprecated requestPurchaseOnPromotedProductIOS()
+
+
+ In StoreKit 2, use promotedProductListenerIOS +{' '}
+ requestPurchase() directly.
-
3. Android: google Field Support
-
- Now supports google field with fallback to deprecated android field.
+
+ 3. Android: google Field Support
+
+
+ Now supports google field with fallback to deprecated{' '}
+ android field.
@@ -700,17 +1746,40 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.5 / openiap-apple v1.3.5 - GitHub Release Tag Management Update
+ š
openiap-gql v1.3.5 / openiap-apple v1.3.5 - GitHub Release Tag
+ Management Update
-
- No API changes. Updated GitHub release tag management for Swift Package Manager (SPM) compatibility.
+
+ No API changes. Updated GitHub release tag management for Swift
+ Package Manager (SPM) compatibility.
-
- - Apple: Uses semver tags directly (e.g.,
1.3.5) - Required for SPM
- - GQL: Uses
gql- prefix (e.g., gql-1.3.5)
- - Google: Uses
google- prefix (e.g., google-1.3.5)
+
+ -
+ Apple: Uses semver tags directly (e.g.,{' '}
+
1.3.5) - Required for SPM
+
+ -
+ GQL: Uses
gql- prefix (e.g.,{' '}
+ gql-1.3.5)
+
+ -
+ Google: Uses
google- prefix (e.g.,{' '}
+ google-1.3.5)
+
),
@@ -723,21 +1792,52 @@ result.error // optional error`}
element: (
- š
openiap-gql v1.3.4 / openiap-google v1.3.14 / openiap-apple v1.3.2 - Platform-Specific Verification
+ š
openiap-gql v1.3.4 / openiap-google v1.3.14 / openiap-apple
+ v1.3.2 - Platform-Specific Verification
-
- verifyPurchase API refactored (Breaking Change). Now requires platform-specific options. sku moved inside each platform options.
+
+ verifyPurchase API refactored (Breaking Change). Now
+ requires platform-specific options. sku moved inside
+ each platform options.
-
),
},
@@ -749,20 +1849,61 @@ result.error // optional error`}
element: (
- š
openiap-google v1.3.12 / openiap-gql v1.3.2 - Google Play Billing 8.2.0 Billing Programs API
+ š
openiap-google v1.3.12 / openiap-gql v1.3.2 -{' '}
+
+ Google Play Billing 8.2.0
+ {' '}
+ Billing Programs API
-
- New Billing Programs API (8.2.0+) and deprecated alternative billing APIs.
+
+ New Billing Programs API (8.2.0+) and deprecated alternative billing
+ APIs.
-
- enableBillingProgram(), isBillingProgramAvailable(), createBillingProgramReportingDetails(), launchExternalLink()
- checkAlternativeBillingAvailability() ā isBillingProgramAvailable()
- showAlternativeBillingInformationDialog() ā launchExternalLink()
+
+ -
+
enableBillingProgram(),{' '}
+ isBillingProgramAvailable(),{' '}
+ createBillingProgramReportingDetails(),{' '}
+ launchExternalLink()
+
+ -
+
+ checkAlternativeBillingAvailability()
+ {' '}
+ ā isBillingProgramAvailable()
+
+ -
+
+ showAlternativeBillingInformationDialog()
+ {' '}
+ ā launchExternalLink()
+
- See: External Purchase Guide
+
+ See:{' '}
+
+ External Purchase Guide
+
+
),
},
@@ -774,17 +1915,46 @@ result.error // optional error`}
element: (
- š
openiap-google v1.3.11 / openiap-gql v1.3.1 - Google Play Billing 8.1.0
+ š
openiap-google v1.3.11 / openiap-gql v1.3.1 -{' '}
+
+ Google Play Billing 8.1.0
+
-
- Billing Library 8.0.0 ā 8.1.0, minSdk 21 ā 23, Kotlin 2.0.21 ā 2.2.0.
+
+ Billing Library 8.0.0 ā 8.1.0, minSdk 21 ā 23, Kotlin 2.0.21 ā
+ 2.2.0.
-
- isSuspendedAndroid - Detect suspended subscriptions due to payment failures
- PreorderDetailsAndroid - New type for pre-order products
- oneTimePurchaseOfferDetailsAndroid - Changed to array type
+
+ -
+
isSuspendedAndroid - Detect suspended subscriptions
+ due to payment failures
+
+ -
+
PreorderDetailsAndroid - New type for pre-order
+ products
+
+ -
+
oneTimePurchaseOfferDetailsAndroid - Changed to array
+ type
+
),
@@ -800,12 +1970,35 @@ result.error // optional error`}
š
openiap v1.3.0 - Platform Props & Store Field Updates
-
- Breaking Changes: Purchase.platform ā store, ios/android props ā apple/google.
+
+ Breaking Changes:{' '}
+
+ Purchase.platform
+ {' '}
+ ā store,{' '}
+
+ ios/android
+ {' '}
+ props ā apple/google.
-
- - New:
verifyPurchaseWithProvider - Verification with external providers like IAPKit
+
+ -
+ New:
verifyPurchaseWithProvider - Verification with
+ external providers like IAPKit
+
),
@@ -821,8 +2014,15 @@ result.error // optional error`}
š
openiap v1.2.6 -
- Terminology alignment with modern StoreKit 2. "Receipt Validation" was Apple's legacy term. Unified interface across iOS and Android.
+
+ Terminology alignment with modern StoreKit 2. "Receipt Validation"
+ was Apple's legacy term. Unified interface across iOS and Android.