1.2.0 - Android Input Type Field Naming Simplification
· 2 min read
This release syncs with OpenIAP v1.3.15 and simplifies field naming in Android input types.
New Features
One-Time Purchase Discount Offers (Android 7.0+)
You can now apply discount offers to one-time (in-app) purchases using offer_token:
# Get product with discount offers
var products = await iap.get_products(["premium_upgrade"], "inapp")
var product = products[0]
# Check for discount offers
if product.discount_offers.size() > 0:
var offer = product.discount_offers[0]
# Purchase with discount
var request = RequestPurchaseAndroidProps.new()
request.skus = ["premium_upgrade"]
request.offer_token = offer.offer_token_android
var result = await iap.request_purchase_android(request)
Breaking Changes
Simplified Field Names in Android Input Types
Fields inside platform-specific input types no longer require the _android suffix. The parent type name already indicates the platform context.
Why this change?
When you use RequestPurchaseAndroidProps, the type name already tells you this is Android-specific. Adding _android suffix to fields inside is redundant.
Migration Guide
| Old Name | New Name |
|---|---|
obfuscated_account_id_android | obfuscated_account_id |
obfuscated_profile_id_android | obfuscated_profile_id |
purchase_token_android | purchase_token |
replacement_mode_android | replacement_mode |
Before:
var request = RequestSubscriptionAndroidProps.new()
request.skus = ["premium_monthly"]
request.obfuscated_account_id_android = "user_123"
request.purchase_token_android = old_token
request.replacement_mode_android = 2
After:
var request = RequestSubscriptionAndroidProps.new()
request.skus = ["premium_monthly"]
request.obfuscated_account_id = "user_123"
request.purchase_token = old_token
request.replacement_mode = 2
Important: Response Types Keep Suffixes
The suffix removal only applies to input types (request parameters). Response types still use suffixes because they're cross-platform:
# Response fields KEEP the _android suffix
var offer = product.discount_offers[0]
var token = offer.offer_token_android # Response field - keeps suffix
# Input fields DON'T have suffix
var request = RequestPurchaseAndroidProps.new()
request.offer_token = token # Input field - no suffix
Bug Fixes
- Fix GDScript enum reverse lookup for deserialization
OpenIAP Versions
| Package | Version |
|---|---|
| openiap-gql | 1.3.15 |
| openiap-google | 1.3.26 |
| openiap-apple | 1.3.13 |
For detailed changes, see the OpenIAP Release Notes.
