- Added support for StoreKit Config Files and StoreKitTest testing RevenueCat#407
- limit running integration tests to tags and release branches RevenueCat#406
- added deployment checks RevenueCat#404
- Added a silent version of restoreTransactions, called
syncPurchases
, meant to be used by developers performing migrations for other systems. RevenueCat#387 RevenueCat#403 - Added
presentCodeRedemptionSheet
, which allows apps to present code redemption sheet for offer codes RevenueCat#400 - Fixed sample app on macOS, which would fail to build because the watchOS app was embedded into it RevenueCat#402
- Fixed a race condition that could cause a crash after deleting and reinstalling the app RevenueCat#383
- Fixed possible overflow when performing local receipt parsing on 32-bit devices RevenueCat#384
- Fixed string comparison when deleting synced subscriber attributes RevenueCat#385
- Fixed docs-deploy job RevenueCat#386
- Fixed a typo in a RCPurchases.h RevenueCat#380
- Move test dependencies back to carthage RevenueCat#371 RevenueCat#373
- fixed tests for iOS < 12.2 RevenueCat#372
- Make cocoapods linking dynamic again RevenueCat#374
- Fix parsing of dates in receipts with milliseconds RevenueCat#367
- Add jitter and extra cache for background processes RevenueCat#366
- Skip install to fix archives with direct integration RevenueCat#364
- Renames files with names that caused issues when building on Windows RevenueCat#362
- Fixes crash when parsing receipts with an unexpected number of internal containers in an IAP ASN.1 Container RevenueCat#360
- Fixes crash when sending
NSNull
attributes toaddAttributionData:fromNetwork:
RevenueCat#359 - Added starter string constants file for logging RevenueCat#339
- Updates the Pod to make it compile as a static framework, fixing build issues on hybrid SDKs. Cleans up imports in
RCPurchases.h
. RevenueCat#353 - Fixes Catalyst builds and build warnings RevenueCat#352 RevenueCat#351
- Fix 'Invalid bundle' validation error when uploading builds to App Store using Carthage or binary RevenueCat#346
- Attribution V2:
- Deprecated
addAttributionData:fromNetwork:
andaddAttributionData:fromNetwork:forNetworkUserId:
in favor ofsetAdjustId
,setAppsflyerId
,setFbAnonymousId
,setMparticleId
- Added support for OneSignal viasetOnesignalId
- AddedsetMediaSource
,setCampaign
,setAdGroup
,setAd
,setKeyword
,setCreative
, andcollectDeviceIdentifiers
RevenueCat#321 RevenueCat#340 RevenueCat#331 - Prevent unnecessary receipt posts RevenueCat#323
- Improved migration process for legacy Mac App Store apps moving to Universal Store RevenueCat#336
- Added new SKError codes for Xcode 12 RevenueCat#334 RevenueCat#338
- Renamed StoreKitConfig schemes RevenueCat#329
- Fixed an issue where cached purchaserInfo would be returned after invalidating purchaserInfo cache RevenueCat#333
- Fix cocoapods and carthage release scripts RevenueCat#324
- Fixed a bug where
checkIntroTrialEligibility
wouldn't return when calling it from an OS version that didn't support intro offers RevenueCat#343
- Fixed a race condition with purchase completed callbacks RevenueCat#313
- Made RCTransaction public to fix compiling issues on Swift Package Manager RevenueCat#315
- Added ability to export XCFrameworks RevenueCat#317
- Cleaned up dispatch calls RevenueCat#318
- Created a separate module and framework for the Swift code RevenueCat#319
- Updated release scripts to be able to release the new Pod as well RevenueCat#320
- Added a local receipt parser, updated intro eligibility calculation to perform on device first RevenueCat#302
- Fix crash when productIdentifier or payment is nil. RevenueCat#297
- Fixes ask-to-buy flow and will now send an error indicating there's a deferred payment. RevenueCat#296
- Fixes application state check on app extensions, which threw a compilation error. RevenueCat#303
- Restores will now always refresh the receipt. RevenueCat#287
- New properties added to the PurchaserInfo to better manage non-subscriptions. RevenueCat#281
- Bypass workaround in watchOS 7 that fixes watchOS 6.2 bug where devices report wrong
appStoreReceiptURL
RevenueCat#330 - Fix bug where 404s in subscriber attributes POST would mark them as synced RevenueCat#328
- Addresses an issue where subscriber attributes might not sync correctly if subscriber info for the user hadn't been synced before the subscriber attributes sync was performed. RevenueCat#327
- Feature/defer cache updates if woken from push notification RevenueCat#288
- Removes all references to ASIdentifierManager and advertisingIdentifier. This should help with some Kids apps being rejected RevenueCat#286
- Fix for posting wrong duration P0D on consumables RevenueCat#289
- Added a sample watchOS app to illustrate how to integrate in-app purchases on watchOS with RevenueCat RevenueCat#263
- Fixed build warnings from Clang Static Analyzer RevenueCat#265
- Added StoreKit Configuration files for local testing + new schemes configured to use them. RevenueCat#267 RevenueCat#270
- Added GitHub Issue Templates RevenueCat#269
- Added
proxyKey
, useful for kids category apps, so that they can set up a proxy to send requests through. Do not use this unless you've talked to RevenueCat support about it. RevenueCat#258 - Added
managementURL
to purchaserInfo. This provides an easy way for apps to create Manage Subscription buttons that will correctly redirect users to the corresponding subscription management page on all platforms. RevenueCat#259 - Extra fields sent to the post receipt endpoint:
normal_duration
,intro_duration
andtrial_duration
. These will feed into the LTV model for more accurate LTV values. RevenueCat#256 - Fixed a bug where if the
appUserID
was not found inNSUserDefaults
andcreateAlias
was called, the SDK would create an alias to(null)
. RevenueCat#255 - Added mParticle as an option for attribution. RevenueCat#251
- Fixed build warnings for Mac Catalyst RevenueCat#247
- Simplified Podspec and minor cleanup RevenueCat#248
- Fixed version numbers that accidentally included the
-SNAPSHOT
suffix
- Reorganized file system structure for the project RevenueCat#242
- New headers for observer mode and platform version RevenueCat#237 RevenueCat#240 RevenueCat#241
- Fixes subscriber attributes migration edge cases RevenueCat#233
- Autodetect appUserID deletion RevenueCat#232 RevenueCat#236
- Removes old trello link RevenueCat#231
- Removes unused functions RevenueCat#228
- Removes unnecessary no-op call to RCBackend's postSubscriberAttributes RevenueCat#227
- Fixes a bug where subscriber attributes are deleted when an alias is created. RevenueCat#222
- Fixes crash when payment.productIdentifier is nil RevenueCat#226
- Updates invalidatePurchaserInfoCache docs RevenueCat#223
- Fixed build warnings about nil being passed to callees that require non-null parameters RevenueCat#216
- Fixed build warnings on tvOS and API availability checks RevenueCat#212
- Added support for WatchOS and tvOS, fixed some issues with pre-processor macro checks on different platforms. RevenueCat#183
- Added an extra method,
setPushTokenString
, to be used by multi-platform SDKs that don't have direct access to the push token asNSData *
, but rather asNSString *
. RevenueCat#208
-
small fixes to docs and release scripts:
- the release script was referencing a fastlane lane that was under the group ios, so it needs to be called with ios first
- the docs for setPushToken in RCPurchases.m say to pass an empty string or nil to erase data, however since the param is of type NSData, you can't pass in an empty string.
- Added Subscriber Attributes, which allow developers to store additional, structured information for a user in RevenueCat. More info: // More info: https://docs.revenuecat.com/docs/user-attributes. RevenueCat#196
- Fixed an issue where the completion block of
purchaserInfoWithCompletion
would get called more than once if cached information existed and was stale. RevenueCat#199 - Exposed
original_purchase_date
, which can be useful for migrating data for developers who don't increment the build number on every release and therefore can't rely on it being different on all releases. - Addressed a couple of build warnings: RevenueCat#200
- Fixed an issue where Swift Package Manager didn't pick up the new Caching group from 3.0.3 RevenueCat#176
- Added new method to invalidate the purchaser info cache, useful when promotional purchases are granted from outside the app. RevenueCat#168
- Made sure we dispatch offerings, and purchaser info RevenueCat#146
- Fixes an issue where Apple Search Ads attribution information would be sent even if the user hadn't clicked on a search ad.
- Adds observer_mode to the backend post receipt call.
- Support for new Offerings system.
- Deprecates
makePurchase
methods. Replaces withpurchasePackage
- Deprecates
entitlements
method. Replaces withofferings
- See our migration guide for more info: https://docs.revenuecat.com/v3.0/docs/offerings-migration
- Added
Purchases.
prefix to Swift classes to avoid conflicts RevenueCat#131 - Enabled base internationalisation to silence a warning (#119)
- Migrates tests to Swift 5 (#138)
- New identity changes (#133):
- The
.createAlias()
method is no longer required, use .identify() instead .identify()
will create an alias if being called from an anonymous ID generated by RevenueCat- Added an
isAnonymous
property toPurchases.shared
- Improved offline use
- The
- Support for Swift Package Manager
- Adds a conditional to protect against nil products or productIdentifier (RevenueCat#129)
- Deprecates
activeEntitlements
inRCPurchaserInfo
and addsentitlements
object toRCPurchaserInfo
. For more info look into https://docs.revenuecat.com/docs/purchaserinfo
- BREAKING CHANGE: fixed a typo in
addAttributionData
Swift's name. - Error logs for AppsFlyer if using deprecated
rc_appsflyer_id
- Error logs for AppsFlyer if missing networkUserID
- BUGFIX:
userId
parameter in identify is not nullable anymore. - DEPRECATION:
automaticAttributionCollection
is now deprecated in favor ofautomaticAppleSearchAdsAttributionCollection
since it's a more clear name. - NEW FEATURE: UIKitForMac support.
- NEW FEATURE: Facebook Ads Attribution support https://docs.revenuecat.com/docs/facebook-ads.
addAttribution
is now a class method that can be called before the SDK is configured.addAttribution
will automatically add therc_idfa
andrc_idfv
parameters if theAdSupport
andUIKit
frameworks are included, respectively.- A network user identifier can be send to the
addAttribution
function, replacing the previousrc_appsflyer_id
parameter. - Apple Search Ad attribution can be automatically collected by setting the
automaticAttributionCollection
boolean totrue
before the SDK is configured. - Adds an optional configuration boolean
observerMode
. This will set the value offinishTransactions
at configuration time. - Header updates to include client version which will be used for debugging and reporting in the future.
- Adds subscription offers
- Avoid refreshing receipt everytime restore is called
- Adds userCancelled as a parameter to the completion block of the makePurchase function.
- Better error codes.
- Refactor to all block based methods
- Optional delegate method to receive changes in Purchaser Info
- Ability to turn on detailed logging by setting
debugLogsEnabled
- Adds support for Tenjin
- Singleton management handled by the SDK
- Adds reset, identify and create alias calls
- Conform RCPurchasesDelegate to NSObject
- Adds requestDate to the purchaser info to avoid edge cases
- Add iOS 11.2 availability annotations
- Make RCPurchases initializer return a non-optional
- Add option for disabling transaction finishing.
- Fix to ensure prices are properly collected when using entitlements
- Delegate methods now only dispatch if they are not on the main thread. This makes sure the cached PurchaserInfo is delivered on setting the delegate.
- Allow developer to indicate anonymous ID behavior
- Add "Purchases.h" to CocoaPods headers
- Attribution! You can now pass attribution data from Apple Search Ads, AppsFlyer, Adjust and Branch. You can then view the ROI of your campaigns, including revenue coming from referrals.
- Fix for entitlements will now have null active products if the product is not available from StoreKit
- Fix version number in Plist for real
- Fix version number in Plist
- Improved error handling for fetching entitlements
- Delegate methods are now guaranteed to run on the main thread
- Fix a bug with parsing dates for Thai locales
- Oh my oh whoa! We made it to version one point oh!
- Entitlements now supported by the SDK. See the guide for more info.
- Improved caching of
RCPurchaserInfo
- Remove Carthage dependencies
- Add delegate methods for restoring
- Allow RCPurchases to be instantiated with a UserDefaults object, useful for syncing between extensions
- RCPurchases now caches the most recent RCPurchaserInfo. Apps no longer need to implement there own offline caching of subscription status.
- Change block based methods to use delegate. restoreTransactions and updatePurchaserInfo no longer take blocks. This means all new RCPurchaserInfo objects will be sent via the delegate methods.
- macOS support. Purchases now works with macOS. Contact [email protected] if interested in beta testing.
- Workaround for a StoreKit issue (38476489) where priceLocale is missing on promotional purchases
- Fix cache preventing prices from being posted
- Prevent race conditions refreshing receipts.
- Make processing of multiple receipt posts more efficient.
- Add support for original application version so users can be grandfathered easily
- Add support of checking eligibilty of introductory prices. RevenueCat will now be able to tell you definitively what version of a product you should present in your UI.
- Add support of initializing without an
appUserID
. This standardizes and simplifies behavior for apps without account systems.
- Change
restoreTransactionsForAppStoreAccount:
to take a completion block since it no long relies on the app store queue. Removed delegate methods. - Added
updatedPurchaserInfo:
that allows force refreshing ofRCPurchaserInfo
. Useful if your app needs the latest purchaser info. - Removed
makePurchase:quantity:
. - Add
nonConsumablePurchases
onRCPurchaserInfo
. Non-consumable purchases will now Just Work (tm).
- Add support for promotional purchases.
- Adds support for
appUserId
s with non-url compatable characters
- Add support for restoring purchases via
restoreTransactionsForAppStoreAccount
- Add support for iOS 9.0
- Add tracking of product prices to allow for real time revenue tracking on RevenueCat.com
- Improve handling of Apple and Backend errors
- Handles missing receipts case
- Fixed issue with timezone parsing
- Rename shared secret to API key
- Remove
purchaserInfoWithCompletion
, nowRCPurchases
fetches updated purchaser info automatically onUIApplicationDidBecomeActive
. - Remove
purchasing
KVO property
- Initial version
- Requires access to the private beta, email [email protected] for a key.