Unity IAP package 4.12.2 is now available

Unity IAP 1.13.1 is now available.

[1.13.1] - 2017-08-18

Fixed

  • Android platforms - Fix Unity crash by stack-overflow when using the UnityPurchasingEditor.TargetAndroidStore(AndroidStore store) method or the Window > Unity IAP > Android > Xiaomi Mi Game Pay targeting menu.
1 Like

Unity IAP 1.13.3 is now available. 1.13.2 release was skipped and is contained in 1.13.3.

[1.13.3] - 2017-09-14

Fixed

  • Fixed a bug that caused some iOS 11 promoted in-app purchase attempts to fail when the app was not already running in the background

[1.13.2] - 2017-09-07

Added

  • Android Gradle - Optional Proguard configuration file to support Gradle release builds on Unity 2017.1+: “Assets/Plugins/Android/proguard-user.txt.OPTIONAL.txt”. See contents of file for more detail.
  • Installer - Compatibility with Unity 2017.2’s Build Settings > Android > Xiaomi Mi Game Center SDK package add button, avoiding duplicate class definitions if previously added to Packages/manifest.json (new Package Manager).

Fixed

  • Windows (UWP) Store - Updates error handling for failed purchases to correctly call OnPurchaseFailed() with an informative PurchaseFailureReason
  • Fixed prices that were incorrectly parsed when the device’s culture specified a number format using a comma for the decimal separator.
  • XiaomiMiPay - Limit product identifier length to 40 characters in IAP Catalog, matching store requirements.
  • Receipt Validation - Address aggressive class stripping NullReferenceException when validating receipt with preservation in Assets/Plugins/UnityPurchasing/scripts/link.xml.
2 Likes

Unity IAP 1.14.0 is now available.

[1.14.0] - 2017-09-18

Added

  • Codeless IAP - Added an IAPListener Component to extend Codeless IAP functionality. Normally with Codeless IAP, purchase events are dispatched to an IAPButton UI Component that is associated with a particular product. The IAPListener does not show any UI. It will receive purchase events that do not correspond to any active IAPButton.
  • The active IAPListener is a fallback—it will receive any successful or failed purchase events (calls to ProcessPurchase or OnPurchaseFailed) that are not handled by an active Codeless IAPButton Component.
  • When using the IAPListener, you should create it early in the lifecycle of your app, and not destroy it. By default, it will set its GameObject to not be destroyed when a new scene is loaded, by calling DontDestroyOnLoad. This behavior can be changed by setting the dontDestroyOnLoad field in the Inspector.
  • If you use an IAPListener, it should be ready to handle purchase events at any time, for any product. Promo codes, interrupted purchases, and slow store behavior are only a few of the reasons why you might receive a purchase event when you are not showing a corresponding IAPButton to handle the event.
  • Example use: If a purchase is completed successfully with the platform’s app store but the user quits the app before the purchase is processed by Unity, Unity IAP will call ProcessPurchase the next time it is initialized—typically the next time the app is run. If your app creates an IAPListener, the IAPListener will be available to receive this ProcessPurchase callback, even if you are not yet ready to create and show an IAPButton in your UI.
  • Xiaomi - IAP Catalog emitted at build-time to APK when Xiaomi Mi Game Pay is the targeted Android store.
  • Xiaomi - Support multiple simultaneous calls to IUnityChannelExtensions.ConfirmPurchase and IUnityChannelExtensions.ValidateReceipt.

Changed

  • CloudMoolah - Upgraded to 2017-07-31 SDK. Compatible with the 2017 Cloud Moolah developer portal. Add IMoolahConfiguration.notificationURL. Removed deprecated IMoolahExtensions.Login, IMoolahExtensions.FastRegister, IMoolahExtensions.RequestPayOut. Preliminary updated documentation is available.
  • Receipt Validation Obfuscator - Improved UI for collecting Google Play License Keys for receipt validation.
  • Xiaomi - Removed deprecated MiProductCatalog.prop file generation in favor of MiGameProductCatalog.prop for Xiaomi Mi Game Pay Android targets.
  • IAPDemo - Guard PurchaseFailureReason.DuplicateTransaction enum usage to be on Unity 5.6 and higher.
  • Internal - Namespace more root-level incidental classes under UnityEngine.Purchasing or UnityEditor.Purchasing as appropriate.

Fixed

  • Invoke the onPurchaseFailed event on a Codeless IAP button if the button is clicked but the store was not initialized correctly
2 Likes

Unity IAP 1.14.1 is now available

[1.14.1] - 2017-10-02

Fixed

  • Apple Application Loader product catalog exporter now correctly exports tab-separated values for catalogs containing more than one product
  • JSONSerializer - Unity 5.3 build-time regression - missing “type” field on ProductDescription. Field is available in 5.4 and higher.
  • FakeStore - uses Product.storeSpecificId instead of Product.id when reporting purchase failures
1 Like

Unity IAP 1.15.0 is now available

NOTE In upcoming v1.15.1 the ProGuard settings will be fully integrated into the respective AAR files for automatically supporting Unity Gradle builds without the need to rename the included proguard-user.txt.OPTIONAL.txt file.

[1.15.0] - 2017-11-13

Added

  • IAP Updates - GUI to control plugin updates in Window > Unity IAP > IAP Updates menu. Supports viewing changelog, skipping this update, disabling automatic updates, and showing current version number. Writes preferences to Assets/Plugins/UnityPurchasing/Resources/IAPUpdaterPreferences.json.

Changed

  • IAP Demo - Improved UI and cleaned up code in the IAP Demo sample scene
  • Version Log - Changed logging of Unity IAP version (e.g. “1.15.0”) to be only at runtime and not while in the Editor

Fixed

  • Facebook - Correctly handles situations where the number of available products exceeds the Facebook server response page size
  • Updater will no longer prompt for updates when Unity is running in batch mode
  • Gradle - Include and relocate sample Proguard configuration file to Assets/Plugins/UnityPurchasing/Android/proguard-user.txt.OPTIONAL.txt; was missing from 1.13.2
  • Security - Upgrades project to autogenerate UnityChannelTangle class if missing when GooglePlayTangle obfuscated secret receipt validation support class is present.
  • UnityIAPUpdater - Fix a FormatException sensitivity for DateTime parsing
  • Xiaomi Catalog - Fix a NullReferenceException seen when exporting an empty catalog
  • Xiaomi Receipt Validation - Fix missing UnityChannelTangle class for Unity IAP projects which used receipt validation
3 Likes

Unity IAP 1.16.0 is now available

[1.16.0] - 2018-01-25

Changed

  • GooglePlay - Gradle builds will ‘just work’. Internalized Proguard warning-suppression configurations. (Moved proguard-user.txt.OPTIONAL.txt into GooglePlay.aar, effectively.)
  • Replaced Apple Application Loader product catalog exporter with Apple XML Delivery product catalog exporter, because submitting IAP via Application Loader is now deprecated

Added

  • Security - Adds the IAppleExtensions.GetTransactionReceiptForProduct method that returns the most recent iOS 6 style transaction receipt for a given product. This is used to validate Ask-to-buy purchases. Preliminary documentation is available.
  • Apple - Adds an optional callback, IAppleConfiguration.SetApplePromotionalPurchaseInterceptorCallback, that intercepts Apple Promotional purchases in iOS and tvOS. Developers who implement the callback should call IAppleExtensions.ContinuePromotionalPurchases to resume the purchase flow. Preliminary documentation is available.
  • Xiaomi - Add support for retrieving developer payload. Preliminary documentation is available.

Fixed

  • Removed Debug log from UnityIAP StandardPurchasingModule
  • Xiaomi - Remove unnecessary Android WRITE_EXTERNAL_STORAGE permission.
2 Likes

Unity IAP 1.17.0 is now available

[1.17.0] - 2018-02-21

Added

  • Unity IAP Promo - [Beta] Supports new Unity Ads feature to advertise IAPs inside advert placements.

Changed

  • Codeless IAP - Allow developers to use both IAPButton and IAPListener simultaneously. Broadcasts ProcessPurchase and OnPurchaseFailed to all productId-matching IAPButtons and to all IAPListeners. Allow multiple IAPListeners to be set using the AddListener method. Note: This change may increase the chance one rewards users multiple times for the same purchase.
2 Likes

Unity IAP 1.18.0 is now available

[1.18.0] - 2018-03-27

Added

  • Unity IAP E-Commerce - [Closed Beta] Supports new “managed store” functionality. Contact iapsupport@unity3d.com to learn more.
1 Like

This new release brings you improved subscription support, extended error code for platform specific issues, and a new “automatic initialization” option for Codeless IAP users.

Improved support for subscription:

  • This version introduced a new class SubscriptionManager that provides you with extended information about IAP subscription products (currently supports Apple Store and Google Play store, more platform support coming soon).
  • Note that on Google Play store, the extended subscription information will be available only on products purchased using this version of IAP SDK (1.19) or newer. Products purchased on older SDK versions do not have the additional meta data in the “developerPayload” that are needed to parse the subscription information.

Extended error code for platform specific issues:

  • Added the StoreSpecificPurchaseErrorCode enum. Currently contains values for all Apple and Google Play error codes that are returned directly from the store.
  • Added the ITransactionHistoryExtensions extension. Developers can call GetLastPurchaseFailureDescription() and GetLastStoreSpecificPurchaseErrorCode() to get extended debugging/error information.

Automatic initialization for Codeless IAP:

  • Added an automatic initialization option for projects using Codeless IAP integration to help make the purchasing system available early on after the game starts.
  • You’ll see a new checkbox inside the IAP Catalog (only visible for projects using the Codeless IAP catalog feature). Checking this option will let the IAP SDK automatically initialize the purchasing system on game start using the products contained in the catalog.

Other changes:

  • For GooglePlay store, developerPayload is now encoded to base64 string and formatted to a JSON string with two other information of the product. When extracting developerPayload from the product receipt, firstly decode the JSON string and get the developerPayload field base64 string, secondly decode the base64 string to the original developerPayload.
2 Likes

An update is available for Unity IAP, v1.20.0.

Additional support for subscription:

  • This version now supports upgrading / downgrading subscription tiers for Google Play store.
  • We now bring feature parity of subscription feature to Amazon store, providing extended information about IAP subscription products

Improve developer experience:

  • Added extension function to get product skuDetails on GooglePlay
  • Added enhanced error code support for Amazon
  • Moved Product Catalog data outside of Assets/Plugins/UnityPurchasing folder to avoid accidentally deleting the IAP catalog definition when cleaning the project assets
  • Added enriched product details and receipt details for Amazon receipt

SDK stability improvements :

  • Fixed an issue where Unknown products (including non-consumables) were consumed during initialization.
  • Fix of subscription period calculation error
  • Fixed ArgumentException error where currency was set to null string when purchase was made.

Unity IAP 1.21.0 is available for developers needing access to the Unity Distribution Platform Beta

Added
UDP module, currently in closed beta. This release did not modify any other IAP functionality.

2 Likes

Unity IAP 1.20.1 is now available

1.20.1: Replaces IAP 1.21 as stable release for non-UDP IAP developers. Those requiring UDP support should remain on 1.21.

Developers currently using Unity IAP 1.21 that do not need support for the Unity Distribution Platform (UDP) Beta on Android should transition to this release.

Added

  • Added a callback function that allows developers to check the state of the upgrade/downgrade process of subscriptions on GooglePlay.

Fixed

  • Google Daydream - Correctly Displays IAP Prompt in 3d VR version instead of native 2D.
  • Fixed issue where IAP catalog prevented deletion of Price under Google Configuration.
  • Amazon Store - Fixed bug where Amazon store could not correctly parse currencies for certain countries.
  • MacOS - Fixed bug that causes non-consumables to auto-restore on MacOS apps after re-install, instead of requiring the the Restore button to be clicked.
  • Updated Android Response Code to return correct message whenever an activity is cancelled.
  • Fixed Mono CIL linker error causing initialization failure in Unity 5.3
  • Fixed inefficient Apple Receipt Parser that was slowing down when a large number of transactions were parsed on auto-rest
2 Likes

UnityIAP 1.22.0 now available. You can install via the Asset store or the Services Window

[1.22.0] - 2019-03-18
Added

  • Added Unity Distribution Portal (UDP) module as an Android build target. Unity Distribution Portal streamlines your distribution process. UDP allows you to only build one version of your game, centralize the management of your marketing assets and metadata, and submit your content to multiple app stores, all in the same workflow. For more details, please refer to Overview | Package Manager UI website.
  • Added extension function for Apple store to expose products’ sku details
  • Added support for developer to include accountId in getBuyIntentExtraParams, this data helps Google analyze fraud attempts and prevent fraudulent transactions.
  • Added GooglePlay store extension function to support restore purchases.
  • Added GooglePlay store extension function to support consume(finish transaction) a purchase manually.

Fixed

  • Fixed UWP build errors.
  • Fixed errors when initializing with two purchasing modules on WebGL & Windows Standalone.
  • Fixed not “re-importing required assets” when switching build targets with IAP.
  • Re-enabled Facebook IAP implementation for non-Gameroom Canvas apps.
  • Fixed GooglePlay store consumable products already owned error due to network issues.
  • Fixed wrong product id when cancel a subscription product purchase.
3 Likes

Unity IAP 1.23.0 is now available. Install via the Asset Store or the Services Window.

Note 1.22.1 is also incorporated into 1.23.0.

[1.23.0] - 2019-10-16

Added

  • UDP - Upgrade to version 1.2.0: new installer to manage previously-installed versions in Project; new UI for UDP Settings window; injection of SDK version information into app manifest; premium game support; user permissions aligned between Unity editor and UDP console; improved security around the transmission of telemetry data (the data you see in your reporting dashboard) between the repacked games and the UDP backend.

Changed

  • UnityChannel / Xiaomi - Please use Unity Distributation Platform (UDP) for Xiaomi functionality. Removed UnityChannel.unitypackage from installer. Disabled and deprecated related APIs: UnityEngine.Store, IUnityChannelExtensions, IUnityChannelConfiguration.
  • Tizen - NOTICE Tizen Store support will be removed in an upcoming release.

Fixed

  • Improved installer compatibility with Unity 2018.4 and 2019.x

[1.22.1] - 2019-08-13

Fixed

  • GooglePlay - SubscriptionInfo.getSubscriptionInfo() KeyNotFoundException when parsing receipts which omit expected fields.
  • GooglePlay - IStoreListener.OnInitializeFailed / IStoreCallback.OnSetupFailed should return InitializationFailureReason.AppNotKnown error when user changes password off-device - user must login. Previously erroneously generated infinite error 6 codes when fetching purchase history after password change.
  • OverflowException when initializing if device locale used the comma (“,”) character as decimal separator.

Sample for manual installer GUI dialog, seen in most Unity versions (excepting 5.6 … 2018.3):

3 Likes

Unity IAP 1.23.1 is now available. Install via the Asset Store or the Services Window.

Note, this reverts [a Google Play change]( Unity IAP package 4.12.2 is now available page-2#post-4336852) impacting offline purchases and consumption.

[1.23.1] - 2019-11-18

Added

Fixed

  • GooglePlay - Fix offline purchases inconsistently generating OnPurchaseFailed callbacks. Changes 1.22.0 “Fixed GooglePlay store consumable products already owned error due to network issues.” - developers may choose to handle the PurchaseFailureReason.DuplicateTransaction for a ProductType.Consumable by rewarding the user with the product, and presuming that Unity IAP will automatically complete the transaction.
  • Improved compatibility with Unity 5.3 and 5.4.
2 Likes

Unity IAP 1.23.2 is now available. Install via the Asset Store or the Services Window.

This improves Google Play stability around purchase-flow interruptions - e.g network, or closing the app while purchasing.

COMPATIBILITY

The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

Also, IAP SDK will be removing the direct integration for the following app stores:

CHANGES

[1.23.2] - 2020-06-17

Added

  • GooglePlay - Improves the chance of successfully purchasing a Consumable or NonConsumable when the purchase flow is interrupted. Also addresses the dialog, “Your order is still being processed”.
  • Unity IAP will now detect this purchasing failure. It will call the IStoreListener.OnPurchaseFailed API, initially. Then it will query Google Play for purchase success during the current app session until network is restored, and it will continue querying in the next app session, after a restart. It will finally call the IStoreListener.ProcessPurchase API if it finds a successful, unaccounted purchase.
  • Addresses the case where (1) a consumable or nonconsumable purchase flow is started and (2) a network disruption occurs, or the app is sent to the background and the purchasing Activity is canceled, or the app is terminated.
  • GooglePlay - Improves the chance of successfully repurchasing a Consumable whose successful transaction failed however to be completed during the current app session.
  • Unity IAP will now detect this consumption failure. It will automatically retry completing the purchase until it succeeds. Note that DuplicateTransaction may still be reported while the retry is ongoing, until the user’s product is repurchasable again. See below for new APIs to monitor the consumption flow.
  • Addresses the case where (1) a Consumable purchase calls IStoreListener.ProcessPurchase, then (2) the transaction is completed by returning ProcessPurchaseResult.Complete from IStoreListener.ProcessPurchase or by directly calling IStoreController.ConfirmPendingPurchase [internally this always records the transaction identifier to the TransactionLog], and finally (3) an interruption (network or exit) aborts the transaction consumption. Only restarting the app or refunding the purchase would reliably resolve this case.
  • GooglePlay - Adds an "isOwned" : <boolean> sub-entry to the Product.receipt’s "Payload" JSON entry in order to help developers understand this product’s current ownership state.
  • Contains true if the product is owned by the user. And please note that true may also indicate that Unity IAP is actively retrying consumption. Its boolean value will be false if the product is available for repurchase, or if we do not yet know Google Play’s current status for this product. To clarify the receipt structure, "isOwned" is located in the Google Play-specific escaped-JSON sub-document. Sample Product.receipt, abbreviated: {"Payload":"{\"json\": ..., \"signature\": ..., \"isOwned\":true}}". See the Google Play section of the Unity IAP Receipt receipt documentation for more on the receipt JSON structure.
  • GooglePlay - Adds boolean IGooglePlayStoreExtensions.IsOwned(Product) API to conveniently extract the new ownership state, above, from the Google Play JSON receipt.
  • Returns true if the product is still owned by the user. Returns false if the product is available for repurchase. Example:
    extensionProvider.GetExtension<IGooglePlayStoreExtensions>()
    .IsOwned(storeController.products.WithID("100.gold.coins"));.
  • GooglePlay - Adds void IGooglePlayStoreExtensions.SetLogLevel(int level) API to reduce logging.
  • level defaults to the legacy value of 0 and configures the Google Play Java store integration to emit debug, info, warning, and error logs. Setting 1 will restrict logging to emit only warnings and errors. Example: extensionProvider.GetExtension<IGooglePlayStoreExtensions>().SetLogLevel(1).

Fixed

  • GooglePlay - After the purchasing dialog, “You already own this product” from Google Play is shown, the IStoreListener.OnPurchaseFailed API is calls with an error of PurchaseFailureReason.DuplicateTransaction.
  • Unity IAP now treats “You already own this product” as a successful purchase, and also calls IStoreListener.ProcessPurchase. Note: This amends the related behavior introduced in 1.23.1.
  • Addresses the scenario where (1) a Consumable is purchased, and during purchasing (2) the Google Play store is interrupted by e.g. a network disruption. (3) Unity IAP correctly calls IStoreListener.OnPurchaseFailed, reporting the interruption as a purchase failure. (4) The user restores the network, attempts to re-purchase, Google Play shows “You already own this product”, and Unity IAP reports the message as an error, calling IStoreListener.OnPurchaseFailed again. (4.1) Repeated re-purchase attempts fail, also potentially failing even after restarting the app.
6 Likes

Unity IAP 1.23.3 is now available. Install via the Asset Store or the Services Window.

Some of 1.23.2’s Google Play changes are now off by default; they are now opt-in. Developers who have access to a post-purchase transaction de-duplication game server may choose to reenable and opt-in to the historical purchase query reconciliation change.

COMPATIBILITY (repeat)

The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

Also, IAP SDK will be removing the direct integration for the following app stores:

CHANGES

[1.23.3] - 2020-06-28

Changed

  • GooglePlay - Default the failed-purchase recovery behavior to be disabled, which was introduced in 1.23.2, to address players deleting their game’s TransactionLog and receiving multiple products for a single purchase. Opt-in to the 1.23.2 behavior with bool IGooglePlayConfiguration.aggressivelyRecoverLostPurchases = true;, when also using a game server capable of validating each transaction and deduplicate based upon Product.transactionID, to reward players one time for a single purchase and support quickly recovering from interrupted-purchases.
  • When a Google Play purchase is made the transaction can become out of synchronization with the Google Play server, appearing to be both failed on the game, and contradictorily successful on the Google Play store — an email message indicating purchase success may be received by the player. This desynchronization occurs when a purchase is interrupted while the native purchasing dialog is displayed to the player. Enable this feature to more aggressively detect these lost purchases.
  • NOTICE: It is strongly recommended this feature be used with an off-device transaction de-duplication mechanism to avoid double-rewarding the player. An example is a game server which records Product.transactionID for each successful purchase and reports to the game whether a new transaction has already been processed for this player during a previous gameplay session. The scenario this occurs is when a player purchases a product, uninstalls and reinstalls their game — erasing Unity IAP’s on-device TransactionLog de-duplication database — and then the player attempts and aborts a re-purchase by cancelling it. The purchase cancellation is one trigger for this recovery feature which may result in recovering and notifying a duplicate success to the game for only the initial purchase. The game could then deny rewarding the player for this detected duplicate purchase.
  • KNOWN-ISSUE: CrossPlatformValidator may show these historically-restored transactions as invalid.
2 Likes

Unity IAP 1.23.4 is now available. Install via the Asset Store or the Services Window.

COMPATIBILITY (repeat)

The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

Also, IAP SDK will be removing the direct integration for the following app stores:

CHANGES

[1.23.4] - 2020-07-13

Added

  • Security - Supports receipts from GooglePlay which omit packageName. These as are seen from v1.23.2’s purchase-recovery features.
  • The purchasing receipt’s packageName is omitted by a GooglePlay historical purchase query APIs used by v1.23.2. When the RSASSA-PKCS1-v1_5 signature is valid and the receipt’s packageName is not included, the appBundleId / googleBundleId input into UnityEngine.Purchasing.Security.CrossPlatformValidator is ignored. To avoid replay attacks we encourage developers continue heuristically scrutinizing the returned purchaseTime and productId values found in decoded receipts.

Removed

  • Analytics - For publication to Kids Category on Google Play and Apple App Store, removed SystemInfo.deviceUniqueIdentifier collection and sharing with ecommerce.iap.unity3d.com server.
7 Likes

Unity IAP 1.23.5 is now available. Install via the Asset Store or the Services Window.

COMPATIBILITY (repeat)

The 1.23.x series is the last version of the IAP SDK to be compatible with the 5.x Unity Editor.

Also, IAP SDK will be removing the direct integration for the following app stores:

CHANGES

[1.23.5] - 2020-08-12

Fixed

  • GooglePlay - Fixed IGooglePlayConfiguration.aggressivelyRecoverLostPurchases == false (default) to reward players for currently in-flight purchases only, and not historical purchases, when the player cleans their device’s TransactionLog, starts and cancels a purchase, and restarts the app.
2 Likes

Unity IAP 2.0.0 is now available. Install via the Asset Store or the Services Window.

This release removes supporting APIs and implementations for the built-in copy of the Unity Distribution Platform (UDP) app store abstraction layer — now available as a separate Unity Package, and also the custom Tizen, CloudMoolah, and Xiaomi app stores.

CHANGES

[2.0.0] - 2020-07-15

Removed

  • UnityChannel / Xiaomi - Completed deprecation, removing related APIs: UnityEngine.Store, IUnityChannelExtensions, IUnityChannelConfiguration.
  • CloudMoolah - Removed.
  • Tizen - Removed.
  • UDP package is no longer installed as a prerequisite

Added

  • UWP - Additional logging during initialization to diagnose developer portal misconfigurations. See In-app purchases and trials - Microsoft Store | Microsoft Learn for a broad discussion of Windows.ApplicationModel.Store configuration.
  • UDP - if not installed or up-to-date, a menu will prompt you to install or update it upon selecting UDP support features. (See below)

Fixed

  • Reduced logging during initialization and purchasing
  • Amazon - Removed KeyNotFoundException after purchase failure
  • UDP - Removed one NullPointerException vulnerability
  • GooglePlay developerPayload spurious JSON parsing exception in log

Changed

  • IAP Updater “Updater Settings…” button now reads “More Information…” to be more accurate
  • UDP store implementation is still available, but must be installed in a separate module, available in either Asset Store or Package manager. The UDP module will need to be updated manually. (See above)
  • Visibility of INativeStores is now public, mainly to support the new UDP package’s needs
  • Resource files - The Product Catalog, Android Target Billing Mode, and Receipt Obfuscator Tangle files will be moved out of the plugins folder.

Important upgrade note

  • Upgrading from prior Unity IAP? - Unity may generate a bad Android build once, immediately after installing the upgrade to this version of Unity IAP. Unity will be misconfigured to incorrectly include multiple Andriod app store Java implementations. So if a dialog appears asking permission to update e.g. the “SamsungApps.aar” file’s metadata, during the first build after the upgrade to this version of Unity IAP, then click Yes, cancel the build, and rebuild. This dialog undesirably defeats Unity IAP’s system for including one Android app store (Window > Unity IAP > Android > Target {app store}), resulting in the inclusion of Android Java code for two app stores. Android app stores such as Google Play and Samsung Apps may block publication of an APK which is detected to include Java code for two app store. Restarting Unity after upgrading will also avoid this dialog.
2 Likes