-
Notifications
You must be signed in to change notification settings - Fork 1
Nami SDK Stable Releases
- Fix potential ANR during paywall closure
- Allow selected sku conditions outside the product container
- Disabling promos on paywall disables auto-detection and application of available offers
- Make sure text does not get detected as a linkable phone number
- Fix video stretching issue on Android 13 and below
- Remove extract padding from certain components
- Fix paywall scrolling on tablets in landscape mode
- Fix issue where paywall can't be re-launched after return from background when
launchMode
issingleTask
- Adjust handling of validate product group to utilize paywall capabilities
- Fix issue with trial and promo offer eligibility detection for multi-page offers
- Fix issue with unavailable sku detection on paywall
- Fix issue with invalid sku detection on paywall
- Fix issue with free offer display
- Fix issue with invalid text wrapping on strikethrough text
- Support vertical align bottom in product container
- Support displaying phase 2 promotional pricing
- Fix video background issue on Android 14 March release
- Fix product info not appearing for 1 product group
- Fix paywall closed on back press on firetv/androidtv
- Suppress certain api calls when device isn't registered
- Don't fetch amazon product if amazon disabled build
- Don't skip product fetch if permitted by cached app config
- Fix carousel indicator positioning
- Fix video component not hiding
- Bump
targetSdkVersion
to34
- Don't interrupt first run lifecycle when Google Play is unavailable
- Make initial config data available even sooner in the lifecycle
- Fix issue with default product not being set on first launch
- Fix swipe back crash from web view
- Fix invalid url crash
- Fix crash when trying to report a purchase before a device id is set
- Fix issue causing superfluous API requests for certain plans
- Fix hiding condition components
- Resolve issue with Amazon support when Nami is not responsible for IAP flow
- use disableSingleGroup flag for more precise eligibility check
- Fix crash with entitlements related to dependency update
- Fix text list item not updating on Lionfish
- Fix icons not rendering as expected
- Fix full screen background image problem
- Fix content fill color not filling entire screen
- Fix collapse component overlap issue
- Fix inconsistent behavior when setting product badge
- Fix text alignment issue when supportsRtl is false
- Support multiple responsive grids
- Support dynamic container fill color
- Support side loading products post paywall raise
- Support conditionals for device orientation
- Adopt Google Play Billing 7.0.0
- Bump Android compile sdk to 34
- Bump Kotlin dependency to 1.8.20
- Support responsive grid component
- Support HLS video
- Support advanced video features
- Fix free trial duration not showing up on Amazon
- Fix issue with product text floating left
- Fix issue with or conditional check
- Fix issue with launch context item not always being applied between launches
- Fix issue with marketplace country reporting
- Fix certain images and list in collapse component not redenering
- Fix wrapper color issue
- Fix background video resizing
- Fix issue with video playing in background
- Fix amazon conversion reporting in paywalls only
- Fix issue with images rendering too small
- Support operating in paywalls-only mode on Amazon
- Support conditional based on product entitlement
- Improve collapse component behavior
- Support for horizontal items in responsive grid
- Support for hidden components
- Support for the all-new Paywall Creator
- Fix product height handing on certain templates
- Improve robustness of over-the-air font installation to account
- Fix issue with background font downloading which could cause an unhandled exception
- Support for dynamic purchase buttons
Version bump to align with other platforms.
- Fix background crash when paywall was on screen and system operating in destroy activity or constrained memory environment.
- Fix issue with invalid sku detection on paywalls with subscriptions and one-time purchases
- Add
sku.pricePerMonthRounded
andpricePerWeekRounded
smart text variables
- Add a version of
NamiPaywallManager.buySkuCancel
that accepts the paywall activity
- Add
NamiPaywallManager.dismiss(paywallActivity: Activity, completionHandler: NamiDismissHandler?)
- Enhance how initial config files are used to improve fallback scenarios
- Enhance how paywall data is processed
- Fix alignment for carousel slide
- Fix text alignment issue on certain templates
- Fix stacked card image issue
- Fix error message state when Google Play disconnected
- Fix
IllegalStateException
related to exoplayer cache
- Improve Nami.configure to support runtime reconfiguration
- Support for runtime language switching for select plans
- Support for product error states on select paywall templates
- Support for
sku.pricePerWeek
smart text - Improved support for Ventura paywall template
- Support portrait mode for tablets
- Resolve an issue with carousel load
- Fix issue with back button interaction when paywall is running on top of React Native
- Resolve a bug related to invalid product groups and paywall eligibility states
Version bump.
- Resolve an issue with eligibility detection when multi-product groups are in use
- Support for Ventura template
- Simplify
NamiPurchaseSuccess
for paywalls-only plans - Improve eligibility detection for supported paywalls, including when product groups are passed into
PaywallLaunchContext
- Fix
indexOutOfBounds
crash related to downloadable fonts - Resolves an issue where subscription and IAP products couldn't both be on the same paywall
- Support for
${sku.pricePerDay}
smart text for Google Play and Amazon Appstore
- If an invalid promo ID is passed from a paywall, pass null through the various paywall callbacks for promoId
- Fix issue where promo id wasn't coming through the paywall action handler events
- Fix issue with entitlement activation on Amazon Appstore in production builds
- Fix purchase environment reporting for Google Play builds
- Don't try to handle purchases on Amazon IAP for paywalls-only plans
- Include Amazon IAP proguard rules
- Keep a flavor of
Nami.configure
that doesn't accept a callback handler
- Guard
NamiPaywallManager.isPaywallOpen
if SDK has not been initialized
- Provide an optional callback when Nami.configure is complete
- Only enable ML capabilities for accounts that are capable
- Don't crash if there are both One Time Purchase and Subscriptions products setup in the Control Center.
- Added
NamiPaywallManager.isPaywallOpen
to find out if a paywall is currently on screen
- If and external identifier has been passed to Nami via
NamiCustomerManager.login
, Google Play Billing so it will be included on the purchase record inobfuscatedExternalProfileId
andobfuscatedExternalAccountId
- Fix SDK crash if calling NamiCampaignManager functions
isCampaignAvailable
,allCampaigns
before SDK is initialized. - Fix SDK crash if calling
NamiCustomerManager
functionsjourneyState
,loggedInId
,getCustomerAttribute
,clearCustomerAttribute
,clearAllCustomerAttributes
,setAnonymousMode
,anonymousModeCapability
before SDK is initialized.
- Adjust proguard rules to resolve a crash
- Refresh active entitlement upon
login
orlogout
for plans with purchase management - Update purchase history from Google Play more often to ensure cross-grade flow isn't engaged after a subscription recently expires
- Bump
targetSdk
andcompileSdk
to33
- Improve back button handling to used recommended approach for modern Android
- Resolve issue where in-app re-subscribe resulted in Google Play error about "Something went wrong..."
- Suppress end-user text on paywalls if it contains unsubstituted replacement tokens
- Fix an issue where certain conditional paywall traits where not applied in minified apps.
- Fix an issue where
NamiCustomerManager.getCustomerAttribute
would not return a value even if the app platform was correctly entitled.
- Expose a method for creating
NamiSKU
objects to be used by cross-plaform SDKs (React Native, Flutter, etc.)
- Generate provisional entitlement for Amazon Appstore purchases
- Make sure provisional entitlement is created by the time the
PURCHASE_SUCCESS
action fires
- Fix issue with provisional entitlements expiring immediately unless TTL value was provided in through
Nami.configure
- Fix issue preventing item in a horizontal container from rendering if it didn't include a height
- Fix issue preventing drop shadows from appearing on container and button component
- Improve the downloadable font caching workflow.
- Rename to
NamiPaywallManager.buySkuCancelled
toNamiPaywallManager.buySkuCancel
to align other other platforms.
- Use Amazon version of Exoplayer for Amazon SDK build.
- Modify drop shadow behavior to match Nami Apple SDK
- Set a shorter provisional entitlement TTL (3 minutes) when purchase environment is sandbox
- Make provisional entitlement TTL configurable through optional Nami.configure value
provisionalGrantTTL
- Allow the provisional grants to be cleared manually via a
NamiEntitlementManager.clearProvisionalEntitlementGrants
- Add loading spinner on purchase buttons. When handling your own purchase management, the spinner are disabled when the SDK received
NamiPaywallManager.buySkuComplete
orNamiPaywallManager.buySkuCancelled
calls.
- Fix a crash in release builds related to provisional entitlement caching
- Bump Exoplayer version to 2.18.1
- Support for downloadable fonts
- Support for focus-enabled table component
- Fix race condition when transmitting Amazon Appstore marketplace data needed to conduct purchase validation
- Aesthetic improvements to paywall launch loading indicator
- Issue temporary entitlement grants for new purchases so
NamiEntitlementManager.active
andNamiEntitlementManager.isEntitlementActive
return the expected answer before the server-side validation step has completed - Cache fetched campaign and paywall data only when both are retrieved successfully
- Return
true
fromNamiCampaignManager.isCampaignAvailable
when both the campaign and its paywall data is available to avoid a situation where the campaign is available so we returntrue
, but the needed paywall data is not soNamiCampaignManager.launch
fails. - Add
skus
onNamiPaywallEvent
representing the products being shown on the paywall when such an event fires
This release changes how NamiEntitlementManager.active
gets its data. It now returns a provisional entitlement grant immediately after purchase, while waiting for server validation. The provisional grant has a TTL of 24 hours. We're going to refine this behavior in future SDK updates to:
- Use a shorter TTL for provisional grants issued through sandbox purchases
- Allow the provisional grant TTL to be configurable through optional Nami.configure parameter
- Allow the provisional grants to be cleared manually via a NamiEntitlementManager.clearProvisionalEntitlementGrants
In the mean time, if you are testing purchases and calling NamiEntitlementManager.active
on this release, perform a clean re-install between purchase tests since a provision grant may still be valid (for 24 hours) even when an accelerated sandbox purchase has expired.
- Improve product loading on Amazon Appstore
- Resolve duplicate
NAMI_PURCHASE_SUCCESS
after purchase success - Resolve missing
NAMI_CLOSE_PAYWALL
after purchase success - Resolve issue with badges on top of product buttons
- Resolve issue with fill image border radius with drop shadow
- Resolve issue with customer personalization tokens
- Add template parameters for a paywall loading screen
- Resolved crash on Amazon Appstore eligibility check
- Resolved Kotlin reflection issue which could crash when using R8 to minify
- Resolved a crash if
NamiCustomerManager.deviceId
was called too early in the SDK lifecycle - Resolved product segment picker not honoring default segment
- Resolved issue with product text or buttons not showing on certain templates
- Resolved issue with list alignment on certain tablet templates
- Resolved Amazon Appstore purchase issue where certain artifacts weren't sent back to Nami servers
- Resolved Amazon Appstore issue where paywall may launch again following a successful purchase
-
NamiCampaignManager.launch
paywallActionHandler
not returns aNamiPaywallEvent
object instead of long list of parameters
- Support for multi-page paywall templates
- Support for animated product toggle component
- Select paywall templates now support automatic eligibility detection for free trials, intro offers, and promotional offers
- Support image alignment
- Open legal links via external browser
- Update Google Play Billing dependency to 5.1.0
- Internal improvements and enhancements
- Support for new and improve product toggle component for support paywall templates
- Play Billing: Remove Amazon Appstore dependency from Google Play build flavor
- Amazon Appstore: Support new offer eligibility options
- Fix layout issue with list component
- Improve API interactions on first run
- Improve focus state handling on Android TV/ Fire TV
- Modify behavior of paywall
restore
action to do be better aligned for platforms and plans
- Fix a crash when
NamiCustoerManager.isLoggedIn
was called too early in the lifecycle. - Fix an issue with image display on certain TV paywall templates
- Fix an issue with impression reporting
- Fix an issue with focus text color not applying to buttons
- Support version of
NamiCampaignManager.isAvailableCampaign
that accepts aUri
for deep link campaigns - Launch performance improvement on TV devices
- Support version of
NamiCampaignManager.isAvailableCampaign
that accepts aUri
for deep link campaigns
- Resolve issue where products weren't always loading from a launch quickly after app load
- Support for anonymous mode - advanced use case
- Support setting legal link font color
- Support link processing when using custom fonts
- Filter campaigns by device form factor
- Fix issue with transaction reporting
- Fix issue with tablet paywall not presenting in landscape
- Fix issue where product data didn't always update on the paywall
- Support for upcoming deep linking campaigns
- Additional metadata included in
paywallActionHandler
callbacks - Support for dynamic sign-in control on supported templates
- Support for custom accessibility hint for paywall product buttons
- Fix issue with loading app config from initial configuration files
- Fix issue with trailing slash when specifying a custom api hostname
- Resolve corner radius and text position for seagull template
- Modify proguard rules to avoid conflict with other obfuscated libraries
- Support for whitelisting product groups at
launch
for supported multi-product group paywall templates - Support for passing custom K/V attributes at
launch
for supported advanced paywall templates
- Fix vertical container height issue impacting brighton v6.1
- Support paywall templates with multiple product containers
- Apply dynamic spacing between bullet character and text in list
- Honor style traits at a product sku level
- Support Android compileSdk version 32
- Resolve inconsistent spacing issues vs. Apple
- Improve width handling in certain paywall template product containers
- Add support for drop shadows in supporting paywall templates
- Expose public interfaces for
NamiCustomerManager
methodssetCustomerAttribute
,getCustomerAttribute
,clearCustomerAttribute
`clearCustomerAttributes,
- Add
NamiPaywallManager.dismiss
facilitate closing the paywall
- Always allow
NamiPaywallManager.registerBuySkuManager
to be registered
- Support strikethrough on paywall text elements
- Support RGBA color formats
- Other internal improvements
- Link/unlink a device to a Customer Data Platform using
NamiCustomerManager.setCustomerDataPlatformId
andNamiCustomerManager.clearCustomerDataPlatformId
. Add routing of success/error throughNamiAccountStateHandler
callback.
- Include campaign id, campaign label (if available), and paywall id in
PaywallActionHandler
events Internal improvements to paywall template color handling - Add form factors to be used by campaign targeting
- Support strikethrough text decoration
- Support additional icons
- Add generic flavor of
NamiPaywallManager.buySkuComplete
method to support cross-platform bridge SDKs
- Use purchase timestamp from Google Play in NamiPurchase objects passed back in purchase changed handlers
- Fix product text alignment on Beluga template
- Support for paywall personalization
- Support for upcoming paywall templates
- Fix to ensure
LaunchCampaignResult
callback fires - Fix for close button font size not being honored
- Fix for icon sitting too close to edge of product button
- For for star icon not being available to paywall templates
- Fix for exception in Amazon IAP Billing when no skus are on the paywall
- Update paywall data when
NamiCampaignManager.refresh
is called - Resolve issues with rendering for Honest Trial paywall template
- Added
NamiCampaignManager.allCampaigns
to get the list of availableNamiCampaign
- Added
NamiCampaignManager.registerAvailableCampaignsHandler
which returns a list of available Nami campaigns when updates are available. - Added
NamiCampaignManager.isCampaignAvailable
to check if a campaign is available - Added
NamiCampaignManager.refresh
to request a fetch of the latest live campaigns for the device from the Nami backend
- Pass a full
NamiSKU
through theNamiCampaignManager.launch
paywall action callbacks andNamiPurchase
objects coming fromNamiPurchaseManager. registerPurchasesChangedHandler
- Support more Smart Text options on Amazon Appstore
- Discovery of historical purchases on Amazon Appstore
- Ensure NAMI_PURCHASE_SELECTED_SKU passes through a
NamiSKU
- Resolve rare issue where product-button Smart Text was not being substituted on paywall open
- Ensure images fit better on some paywall designs
- Support minimum API version 22
- Improve support for paywall templates with custom fonts
- Improved support for long legal text
- Support for Dark Mode in compatible paywall templates
- Fix slide text font size not being honored on paywalls with carousel component
- Fix to improve PNG image loading for paywalls with a carousel component
- Internal improvements for future paywall templates
- Fix issue selecting default sku no-code paywalls with multiple product groups
- Resolve localization issue for sku
durationInMonths
andperiodInMonths
variables
- Introduce Carousel component for supported paywall templates
- Improve focus state on living room paywalls
- Provide localizations for Smart Text sku
duration
andperiod
variables in 48 languages
- Resolve first run crash for Linked Paywalls launched before products have finished fetch
- Support for certain branded customer templates
- Advanced use case: support for overriding device language with a
NamiLanguageCode
- Added
LaunchCampaignResult.PurchaseChanged
to NamiCampaignManager.launch result callback to surface changes purchase events occurring the launch lifecycle. - Added additional
paywallActionCallback
to NamiCampaignManager.launch to allow the monitoring of the user's paywall interactions (see: NamiPaywallAction) as they occur - Added
NamiPaywallManager.registerCloseHandler
to allow override of paywall close behavior when implemented - Support for paywall templates with product selection that is separated from the buy action
- Added a new paywall Smart Text variable:
priceDifferenceFromSku
- Improved support for customers bringing their own Play Billing implementation
- Lower Android minimum SDK version to 25. See compatibility guide for details.
- New paywall templates: Mantis, Venice
- Added a new Smart Text variable:
percentagePriceDifferenceFromSku
- Added
NamiCustomerManager.registerAccountStateHandler
to make it easier to respond to login and logout calls. See SDK Reference for details. - Initial support for paywalls with more than one group of products
- Initial support for Android TV
- Initial support for 3-product paywall template (codename: starfish)
- Add new Smart Text variables: pricePerMonth, durationInMonths, periodInMonths, periodNumberInMonths (see more: https://docs.namiml.com/docs/paywall-smart-text)
- Support for paywall templates (codenames: penguin, pacific, trident)
- Support for next-generation campaigns supporting paywall a/b testing
- Simple, yet more powerful mechanism to present paywalls
- SDK usability improvements including easier to understand interfaces
- Updated internal API calls to latest spec for improved performance and robustness
- Improved NamiCampaignManager and NamiPaywallManager for new style campaigns and paywalls
- Add
NamiEntitlementManager.refresh
to get latest entitlement state from Nami servers
- Renamed
NamiEntitlementsManager.registerChangeListener
toNamiEntitlementsManager.registerActiveEntitlementsHandler
- Renamed
NamiAnalyticsSupport.registerAnalyticsListener
toNamiAnalyticsSupport.registerAnalyticsHandler
- Renamed
NamiCustomerManager.registerCustomerJourneyChangeListener
toNamiCustomerManager.registerJourneyStateHandler
- Renamed
NamiPurchaseManager.registerPurchasesChangedListener
toNamiPurchaseManager.registerPurchasesChangedHandler
- Remove
NamiPaywallManager.registerApplicationAutoRaisePaywallBlocker
- Paywalls are now raised using NamiCampaignManager
-
NamiPaywall.raisePaywall
replaced byNamiCampaignManager.launch
-
- Simplified linking device to an external account via external ID
-
Nami.setExternalIdentifier
replaced byNamiCustomerManager.login
-
Nami.clearExternalIdentifier
replaced byNamiCustomerManager.logout
-
Nami.getExternalIdentifier
replaced byNamiCustomerManager.loggedInId
- Added
NamiCustomerManager.isLoggedIn
- Removed
NamiExternalIdentifierType
-
- Updated several interfaces for clarity
- Renamed
NamiEntitlementManager.registerEntitlementChangeListener
toNamiEntitlementManager.registerChangeHandler
- Renamed
NamiPaywallManager.registerSignInListener
toNamiPaywallManager.registerSignInHandler
- Renamed
NamiPaywallManager.registerPaywallRaiseListener
to NamiPaywallManager.renderCustomUiHandler`
- Renamed
- Ability to set untrusted entitlements moving to backend API
- Removed
NamiEntitlmentManager.setEntitlements
- Removed
NamiEntitlmentManager.getEntitlements
- Removed
NamiEntitlmentManager.clearEntitlements
- Removed
NamiPlatformType
- Removed
- Track Android TV back button actions through campaign launch action
- Support for focus states on living room paywalls
- Add additional symbols for use within paywall templates
- Support changing symbol color on templates that support them
- UI improvements for paywall templates with horizontal products
- Further improvements to support for Nami cross-platform SDKs
- Additional enhancements to support for upcoming paywall templates
- Improved support for Nami cross-platform SDKs (e.g. Flutter, React Native, Xamarin)
- Add initial support for upcoming paywall templates
- Provide better error message in logs when campaign launch fails
- Adjust template padding behavior
- Add gradient color support
- Improve upgrade/downgrade handling for apps with tiers of service
- Add additional debug level logging during upgrade/downgrade scenarios
- Improved support for apps with a large number of SKUs
- Improved support for paywall templates (codenames: penguin, pacific, trident)
- Additional logging if the
NamiPurchaseCompleteHandler
callback can't be invoked - Add
NamiPurchase
object toNamiPurchaseCompleteResult
- Add Play Billing purchase token to
NamiPurchase
- Surface paywall sku entitlement reference for linked paywall
- Paywall impressions, session, and transaction events upgraded to V3 spec; will now show up in Control Center > Developer
- Updated Basic sample app to include
Refresh Entitlements
button - Improved log message when a campaign with linked paywall is launched, but
NamiPaywallManager.renderCustomUiHandler
is not implemented
- Improved robustness of gathering required Google Play product details before paywall display
- Removed a background service responsible for some crashes
- Improved paywall display behavior on Android TV
- Fixed calculation for Smart Text variable
priceDifferenceFromSku
- Fix bug that prevented past purchase validation for products no longer present on paywalls
- Fix another crash related to a SDK service that attempts to start when app is in background
- Fix crash due to unhandled exception for API paginated requests
- Fix crash related to a SDK service that attempts to start when app is in background
- For templates supporting gradients, correct gradient direction
- Improve feature badge rendering on trident template
- Improve product button rendering on starfish template
- Add missing product subtext on starfish template
- Resolve missing impression and transaction events
- Fixed crash in background service when SDK not initialized
- Fixed NamiEntitlementsManager.registerActiveEntitlementsHandler callback not firing
- Fixed NamiCustomerManager.registerJourneyStateHandler callback not firing
- Better error handling for incorrect App Platform ID
- Gracefully handle unknown (to the SDK) paywall types
- Change Basic sample app to minimum SDK version 25
- Fix UI thread issue in Java sample code
- Rename
NamiPaywallRaiseListener
toNamiPaywallDataProvider
to align with V3 spec - Update Nami configure function parameter names to align with V3 spec
- Removed dead code related to V2 api spec
- Update sample apps to use new interfaces
- Migrate core API requests to Nami V3 API spec
- Update maven publish location to https://packages.namiml.com/NamiSDK/Android/
- Dependency update for building on M1 Macs
- Parse backend data for next-gen paywalls
- Bring Jetpack Compose related dependencies into the project
- Bump Kotlin version to 1.6.10
- Bump R8 version to 3.3.28 to resolve minify issues
- Add optional completion handler to
setExternalIdentifier
andclearExternalIdentifier
Our 2.0.1 release contains a bug fix for a crash observed on some devices.
- Guard against crash in session end detection when SDK is not initialized
Our 2.0.0 release contains several big updates including:
- Localization of paywalls for multi-language support
- Support for upgrades and downgrades of subscription purchases
- One time purchase support for both consumables and non-consumables
- Various other updates noted below
- Minimum Android SDK changed from 21 to 26 (Android 8.0)
- Breaking changes if you use linked paywall:
-
NamiPaywall.formattedSkus
has been replaced withNamiPaywall.namiSkus
-
NamiPaywall.privacyPolicy
andNamiPaywall.tosLink
has been removed, and move to one deeper objectNamiPaywall.legalCitations
.privacyPolicy
is nowprivacyText
-
NamiPaywall.getFooterText()
method has been renamed and moved to extension method ofLegalCitations
. It's now calledgetLinkifiedLegalCitations
- Display options such as
signInControl, restoreControl and allowClosing,useBottomOverlay
has been moved fromNamiPaywall
to one deeper objectNamiPaywall.displayOptions
-
-
NamiAnalyticsKeys.CAMPAIGN_TYPE
has been removed
- Added support for one-time purchases
- Execute a SKU change for an upgrade or downgrade any time a new purchase is made where the granted entitlements are an exact match to an already active purchase
- Added customer journey state change callback,
registerCustomerJourneyChangedListener
- New enum for supported language codes
NamiLanguageCode
-
NamiConfiguration
now has a new membernamiLanguageCode
which is nullable and of type enumNamiLanguageCode
. If set, fetches paywalls in the specified language -
NamiPaywall
now has a new memberlocaleConfig
of typeLocaleConfig
, which contains data for localizing buttons on the paywall UI - Added support for paywall styles for SKU sub display text. Includes new style variables for linked paywalls
sku_sub_display_text_color
,sku_sub_display_text_shadow_radius
,sku_sub_display_text_shadow_color
- Acknowledge pending purchases on every app resume
- Accessibility: Improved TalkBack capabilities for text to speech on Nami paywalls
- Fixed issue where there could be multiple connections to Play Billing, resulting in duplicated API calls to Nami servers. There was no impact to customer apps from the extra calls.
- Upgraded to Google Play Billing 4.0.0
- Upgraded various dependency versions
- In some situations, paywall smart text processing could cause a crash from a
DateParseException
- success and failure objects in
preparePaywallForDisplay
were obfuscated
Note this version has been removed from Maven, please use v1.2.1
- Support for Paywall Smart Text in paywalls
-
NamiSKU
now has three new fields =>name
,displayText
anddisplaySubText
- New methods with signature
NamiPaywallManager.processSmartText()
. This methods injects proper values fromNamiSKU
orNamiSKUs
in providedsmart text
and returns a final processed text. For example,${sku.price}
would be converted to$1.99
while taking the price value from givensku
. - Proper error handling and logging for purchase flow related errors
- new version of
preparePaywallForDisplay
with single argumentresult
callback - added
PLAY_BILLING_NOT_AVAILABLE
error type toPreparePaywallError
returned bypreparePaywallForDisplay
if the SDK is not connected to Google Play Billing (and would not be able to fetch SKU data or process a purchase)
-
preparePaywallForDisplay
method that has a callback with argumentssuccess
anderror
- Redesigned parts of API interface to be easier to use from Java
- New method
NamiPaywallManager.preparePaywallForDisplay()
has been added to prepare paywall before raising it.NamiPaywallManager.raisePaywall()
should ideally be called only after confirming a success from callback via this new method. This method helps you ensure that all data is available for the paywall before displaying it - New enum
PreparePaywallError
which gets return via callback withNamiPaywallManager.preparePaywallForDisplay()
-
NamiPaywallManager.canRaisePaywall()
has been deprecated. Please replace its usage withNamiPaywallManager.preparePaywallForDisplay()
-
Kotlin
version updated to1.4.31
-
FormattedSku
now providedskuId
which is reference id of the SKU
- Dependencies updated. Important ones are listed below,
-
Okhttp
version updated to4.9.0
-
Kotlin
version updated to1.4.30
-
-
NamiPaywall
has a two new attributes (members),-
formattedSkus
- List ofFormattedSku
objects which provides Skus and associated properties likefeatured
. Note that order of the skus in list matches the order set in the Nami Control Center -
useBottomOverlay
- A boolean flag to denote whether paywall has enabled or disabled use of bottom overlay on paywall UI via Nami Control Center
-
-
NamiPaywallManager.raisePaywall(String, Activity)
- New method to raise paywall via a particular Developer Paywall ID
-
NamiMLManager.coreAction(List<String>)
method has been removed. Same method that takes single actionString
is still available
- Nami's Paywall design has been revamped for better usability, performance and better usage of screen space
- Nami's Paywall has been restricted to portrait mode only
- Update Google Play Billing library to version
3.0.2
-
BasicLinked
demo app has been updated with new paywall design just to showcase another idea of paywall UI building
-
NamiPaywall
has a new paramaterstyleData
which providesPaywallStyleData
object that contains styling data for particular paywall as configured onNami Control Center
- Version of
NamiMLManager.enterCoreContent
,NamiMLManager.exitCoreContent
andNamiMLManager.coreAction
methods which takes a singleString
instead ofList
- New helper method
generateButtonLabelForPaywall
added inNamiSKU
to generate paywall button label. You may use this to display text on SKU buttons on a linked paywall - Support for custom paywall styling based on how it's defined on
Nami Control Center
. Note that this only applies toNami
type paywall.
- Renamed callback registration methods and lambda inputs to follow a standard across the SDK
-
registerAnalyticsHandler
-->registerAnalyticsListener
-
registerApplicationSignInProvider
-->registerSignInListener
-
registerApplicationPaywallProvider
-->registerPaywallRaiseListener
-
registerPurchasesChangedHandler
-->registerPurchasesChangedListener
- Related typealias renamed,
-
NamiSignInProvider
-->NamiSignInListener
-
NamiAnalyticsCallback
-->NamiAnalyticsListener
-
NamiPurchaseResponseCallback
-->NamiPurchaseResponseListener
-
-
-
NamiSKU
object has been overhauled, and it now contains reference of SkuDetails from Play Billing associated with givenNamiSKU
-
NamiSKU
is no longer aParcelable
object -
NamiPurchaseManager.getSkuDetails()
static method has been removed as now eachNamiSKU
contains relatedSkuDetails
object -
NamiPurchaseSource
enum has been moved tocom.namiml.paywall
package and refactored to simply it. -
NamiEntitlement
has been refactored to make its properties immutable -
SKUType
enum renamed toNamiSKUType
-
SubscriptionPeriod
enum has been made private
-
Entitlement
state is now maintained properly so app can request and get active entitlements even in offline mode -
registerPaywallRaiseListener
now provides sorted list ofNamiSKU
according to their priority defined onNami Control Center
so if you've a linked paywall then you no longer need to sort the SKU before displaying them -
NamiPurchaseResponseListener
only gets invoked while user is in purchase flow
-
Improvement:
NamiEntitlementChangeListener
now only gets triggered when there is in fact a change of entitlement takes place. -
Improvement:
NamiPurchaseResponseCallback
now only gets triggered while user is in the Google billing purchase flow. -
Improvement: Documentation to clearly mention that
NamiEntitlementChangeListener
would return onlyactive
entitlements
- Fix obfuscation issues related to
NamiCustomerManager
andCustomerJourneyState
- Allow ability to know when user closes a
blocking
paywall.NamiPaywallManager.didUserCloseBlockingNamiPaywall()
NamiPaywallManager.REQUEST_CODE_NAMI_PAYWALL
NamiPaywallManager.RESULT_CODE_NAMI_PAYWALL
- Provide
currentCustomerJourneyState
via newNamiCustomerManager
classNamiCustomerManager.currentCustomerJourneyState()
- Provide
restore purchase
functionality viaNami Paywall
where user would be deep linked toGoogle Play
app's subscription page
- Updated
AppCompat
dependency to version1.2.0
- Updated
Material Design
dependency to version1.2.0
- Updated
Google Play Billing
dependency to version3.0.0
- SDK now supports
Android 11 (API level 30)
- Renamed some properties of
NamiConfiguration
and methods ofNamiConfiguration.Builder
(Breaking) - Changed
groupId
andartifactId
of maven artifactory artifact - Renamed
NamiSKU.product
toNamiSKU.skuId
(Breaking) - Made all resources from SDK
private
so calling app don't accidentally use them