All Versions
32
Latest Version
Avg Release Cycle
11 days
Latest Release
1294 days ago

Changelog History
Page 3

  • v0.9.0 Changes

    March 09, 2020

    What's new in Apphud SDK 0.9.0:

    • ๐Ÿ‘Œ Support for consumable, non-consumable and non-renewing subscription in-app purchases.
    • โž• Added new Apphud delegate method func apphudNonRenewingPurchasesUpdated(_ purchases: [ApphudNonRenewingPurchase]). Called when standard in-app purchase is made or has been refunded.
    • ๐Ÿ‘ Apple Search Ads attribution support.
    • โž• Added new method func productsDidFetchCallback(_ callback: @escaping ([SKProduct]) -> Void). Set up a callback block when SKProducts are loaded from the App Store.
    • โž• Added new method func refreshStoreKitProducts(_ callback: (([SKProduct]) -> Void)?) to force refresh products. Should be used only as a fallback, because Apphud SDK automatically fetched products from the App Store at launch.
    • โž• Added new class ApphudPurchaseResult, which contains subscription, nonRenewingPurchase, transaction and error properties.
    • ๐Ÿ”„ Changed method func purchase(_ product: SKProduct, callback: ((ApphudPurchaseResult) -> Void)?). Now it returns a new class ApphudPurchaseResult which contains all the necessary data.
    • โž• Added new method func purchaseWithoutValidation(_ product: SKProduct, callback: ((SKPaymentTransaction, Error?) -> Void)?). This method is just a wrapper method around StoreKit, and it doesn't wait until receipt is validated. It immediately returns SKPaymentTransaction object. Use this if you don't care about validating receipts.
    • Changed method func purchasePromo(_ product: SKProduct, discountID: String, _ callback: ((ApphudPurchaseResult) -> Void)?). Now it returns a new class ApphudPurchaseResult which contains all the necessary data.
    • Method that was deprecated is now completely removed func submitReceipt(_ productIdentifier : String, _ callback : ((ApphudSubscription?, Error?) -> Void)?). Apphud SDK automatically submits App Store receipts to Apphud.
    • โž• Added new method func nonRenewingPurchases() -> [ApphudNonRenewingPurchase]? which returns array of standard in-app purchases, if there are any.
    • โž• Added new class ApphudNonRenewingPurchase which contains product identifier, purchase date and and optional cancellation date.
    • โž• Added new method func isNonRenewingPurchaseActive(productIdentifier : String) -> Bool. Returns true if current user has purchased standard in-app purchase with given product identifier. Returns false if this product is refunded or never purchased.
    • โช Method restoreSubscriptions renamed to func restorePurchases(callback: @escaping ([ApphudSubscription]?, [ApphudNonRenewingPurchase]?, Error?) -> Void). Added new callback parameter [ApphudNonRenewingPurchase]?, which returns array of standard in-app purchases, if there are any.
    • Method migrateSubscriptionsIfNeeded renamed to func migratePurchasesIfNeeded(callback: @escaping ([ApphudSubscription]?, [ApphudNonRenewingPurchase]?, Error?) -> Void). Added new callback parameter [ApphudNonRenewingPurchase]?, which returns array of standard in-app purchases, if there are any.
    • โž• Added new method func setFinishAllTransactions(). Using this method Apphud SDK will finish all pending transactions, not only those that were started by Apphud SDK. See Apphud.swift for details.
    • Apphud SDK now tries to re-register user, re-fetch products and re-submit receipts when application becomes active if there were errors on app launch; for example, if there was no Internet connection.

    Migration guide to 0.9.0:

    • โšก๏ธ Update pod using terminal: pod update ApphudSDK
    • โšก๏ธ Update method from Apphud.purchase(product) { (subsription, error) in ...} to Apphud.purchase(product) { result in ...}. You will find subscription and error objects inside new ApphudPurchaseResult object.
    • โšก๏ธ Update method from Apphud.purchasePromo(product, discountID: promoID) { (subsription, error) in ...} to Apphud.purchasePromo(product, discountID: promoID) { result in ...}. You will find subscription and error objects inside new ApphudPurchaseResult object.
    • โšก๏ธ Update method from Apphud.restoreSubscriptions { subscriptions, error in ...} to Apphud.restorePurchases { subscriptions, purchases, error in ...}.
    • โšก๏ธ Update method from Apphud.migrateSubscriptionsIfNeeded { subscriptions in ...} to Apphud.migratePurchasesIfNeeded { subscriptions, purchases, error in ...}.
  • v0.8.6

    February 25, 2020
  • v0.8.5 Changes

    February 14, 2020

    What's new in 0.8.5:

    • โž• Added new ApphudUIDelegate method func apphudShouldPerformRule(rule: ApphudRule) -> Bool. See Apphud.swift for method explanation.
    • โšก๏ธ (Attention!) Renamed ApphudUIDelegate method to func apphudShouldShowScreen(screenName: String) -> Bool. Don't forget to update this method parameter, if you were using it.
    • โž• Added Adjust support.
    • โช Renamed func restoreSubscriptions(callback: @escaping ([ApphudSubscription]?, Error?) -> Void). Added Error? parameter.
    • ๐Ÿ‘Œ Improved logic for func migrateSubscriptionsIfNeeded method.
    • ๐Ÿ”Š Pretty printed logs.
    • ๐Ÿ›  Fixed bug with user id being changed sometimes.
    • โช User ID is now saved to Keychain, so after re-install it is restored.
    • ๐Ÿ›  Fixed bug with push opened event not being sent in some cases.
    • โž• Add rule name and screen name to delegate methods.
    • โž• Add more logs.
  • v0.8 Changes

    January 05, 2020

    What's new in 0.8:

    • ๐Ÿ†• New Rules support. Old rules (win back lapsed subscribers, billing issue) are deprecated and no longer supported since this SDK version. When upgrading to this SDK version, you should create your new screens and rules in web dashboard. If you need help with SDK upgrade, please contact us: https://apphud.com/contacts
    • Method func submitReceipt(_ productIdentifier : String, _ callback : ((ApphudSubscription?, Error?) -> Void)?) is now deprecated. You don't need to call it anymore, as starting now Apphud SDK automatically tracks all your in-app purchases and submits App Store receipt to Apphud. If you were using callback from this method, you can use apphudSubscriptionsUpdated delegate method instead;
    • โž• Added new protocol ApphudUIDelegate with screen controller delegate methods;
    • โœ‚ Delete method func apphudScreenPresentationStyle(controller: UIViewController) -> UIModalPresentationStyle is moved from ApphudDelegate to new protocol ApphudUIDelegate;
    • โž• Added new method func showPendingScreen() to present Apphud screen that was delayed (i.e. returned false) in apphudShouldShowScreen delegate method;
    • โž• Added new method func migrateSubscriptionsIfNeeded(callback: @escaping ([ApphudSubscription]?) -> Void) which helps you to migrate existing subscribers into Apphud. Useful when adding Apphud SDK to live app.
    • ๐Ÿ›  Other minor bug fixes and improvements.
  • v0.7.5 Changes

    October 31, 2019

    What's new in 0.7.5:

    • โž• Added new method func disableIDFACollection() to disable IDFA collection. Method must be called before SDK initialization.
    • โฌ‡๏ธ Downgraded minimum required Swift version from 5.0 to 4.2.
    • โž• Added protection from calling initialization method twice.
  • v0.7.4 Changes

    October 16, 2019

    What's new in 0.7.4:

    • โž• Added new method func setIntegrationsTestMode(). If this method is called, Apphud will send all subscription events of current user to your test analytics, if test api keys are set in integrations dashboard.
    • ๐Ÿ‘Œ Improved SDK initialization logic
  • v0.7.3 Changes

    October 04, 2019

    What's new in 0.7.3:

    • โž• Added new method func addAttribution(data: [AnyHashable : Any], from provider: ApphudAttributionProvider, identifer: String? = nil, callback: ApphudBoolCallback?). Use this method to submit attribution data from your attribution provider.
    • โž• Added new method func didFetchProductsNotification() -> Notification.Name. Add observer to this notification name to get notified when SKProducts are fetched from StoreKit.
    • โž• Added new method func products() -> [SKProduct]?. Returns array of SKProduct objects fetched from StoreKit. Now you don't have to fetch and store products for yourself.
    • Callback in func submitPushNotificationsToken(token: Data, callback: ApphudBoolCallback?) method is now optional.
    • Method func purchase(product: SKProduct, callback: ((ApphudSubscription?, Error?) -> Void)?) renamed to more lightweight func purchase(_ product: SKProduct, callback: ((ApphudSubscription?, Error?) -> Void)?).
  • v0.6.8 Changes

    September 26, 2019

    What's new in 0.6.8:

    • ๐Ÿ›  Fixed a bug when in dark mode in iOS 13 feedback screen had black text view (should be always white)
  • v0.6.7 Changes

    September 26, 2019

    What's new in 0.6.7:

    • โž• Added loader in Apphud purchase screen
  • v0.6.5 Changes

    September 25, 2019

    What's new in Apphud SDK 0.6.5

    • โž• Added func apphudScreenPresentationStyle() -> UIModalPresentationStyledelegate method to make control presentation style of Apphud controller. This is useful since iOS 13 presents in page sheet style by default. Now you can make it full screen.
    • โž• Added two more delegate methods that help to control present/dismiss actions of Apphud controller
    • ๐Ÿ‘Œ Improved apphudSubscriptionsUpdated delegate method. Updated documentation.