- Device identifiers become long-lived
launch()
,unlaunch()
,enableRemoteNotifications()
anddisableRemoteNotifications()
become async functions with a callback alternative- Add support for customisable hosts
- Fix
NotificarePass.data
decoding - Add
Equatable
compliance to applicable data models - Allow
configure()
to be called more than once, provided Notificare is unlaunched.
NotificareDevice.id
attribute no longer contains the push token. UseNotificare.shared.push().subscription
instead.- The
NotificareDevice
data model was reduced to only publicly relevant attributes. didRegisterDevice
only triggers once, when the device is created.launch()
,unlaunch()
,enableRemoteNotifications()
anddisableRemoteNotifications()
become suspending functions that complete after all the work is done.NotificareTransport
was moved to the push module.- Drops support for the monetize module.
- Removed deprecated
notificare(_:didReceiveNotification:)
. Usenotificare(_:didReceiveNotification:deliveryMechanism:)
instead. - Removed deprecated
notificare(_:didReceiveUnknownAction:for:responseText:)
delegate method. Renamed tonotificare(_:didOpenUnknownAction:for:responseText:)
. - Removed deprecated
handleNotificationRequest()
from push module. Include the NotificareNotificationServiceExtensionKit and useNotificareNotificationServiceExtension.handleNotificationRequest()
instead.
- Fix
NotificarePass.data
decoding - Add
Equatable
compliance to applicable data models - Changed the
subscriptionId
properties to a more robust data model - Allow
configure()
to be called more than once, provided Notificare is unlaunched.
- Device identifiers become long-lived
launch()
,unlaunch()
,enableRemoteNotifications()
anddisableRemoteNotifications()
become async functions with a callback alternative- Add support for customisable hosts
NotificareDevice.id
attribute no longer contains the push token. UseNotificare.shared.push().subscriptionId
instead.- The
NotificareDevice
data model was reduced to only publicly relevant attributes. didRegisterDevice
only triggers once, when the device is created.launch()
,unlaunch()
,enableRemoteNotifications()
anddisableRemoteNotifications()
become suspending functions that complete after all the work is done.NotificareTransport
was moved to the push module.- Drops support for the monetize module.
- Removed deprecated
notificare(_:didReceiveNotification:)
. Usenotificare(_:didReceiveNotification:deliveryMechanism:)
instead. - Removed deprecated
notificare(_:didReceiveUnknownAction:for:responseText:)
delegate method. Renamed tonotificare(_:didOpenUnknownAction:for:responseText:)
. - Removed deprecated
handleNotificationRequest()
from push module. Include the NotificareNotificationServiceExtensionKit and useNotificareNotificationServiceExtension.handleNotificationRequest()
instead.
- Add support for the URLResolver notification type
- Fix anonymous device registration
- Preload images before showing in-app messages
- Fix
NotificarePass.type
decoding
- Add support for deferred links
- Add privacy manifests
- Code sign XCFrameworks
- Prevent processing location updates too close to the last known location
- Fix race condition where geo triggers and region sessions were sent multiple times
- Limit the amount of location points and ranged beacons in geo sessions
- Improve polygon regions handling
- Improve notifications UI
- Prevent the
device_registered
event from invoking before theready
event - Automatically enable remote notifications during launch when possible
- Automatically enable location updates during launch when possible
- Drop support for iOS 12.0
Important notice: Re-enabling remote notifications and location services is no longer required. You can safely remove the following piece of code as the SDK will automatically handle it for you during the launch flow.
func notificare(_ notificare: Notificare, onReady application: NotificareApplication) {
// This check is no longer necessary.
if Notificare.shared.push().hasRemoteNotificationsEnabled {
Notificare.shared.push().enableRemoteNotifications { _ in }
}
// This check is no longer necessary.
if Notificare.shared.geo().hasLocationServicesEnabled {
Notificare.shared.geo().enableLocationUpdates()
}
}
- Prevent the
device_registered
event from invoking before theready
event - Automatically enable remote notifications during launch when possible
- Automatically enable location updates during launch when possible
- Drop support for iOS 12.0
Important notice: Re-enabling remote notifications and location services is no longer required. You can safely remove the following piece of code as the SDK will automatically handle it for you during the launch flow.
func notificare(_ notificare: Notificare, onReady application: NotificareApplication) {
// This check is no longer necessary.
if Notificare.shared.push().hasRemoteNotificationsEnabled {
Notificare.shared.push().enableRemoteNotifications { _ in }
}
// This check is no longer necessary.
if Notificare.shared.geo().hasLocationServicesEnabled {
Notificare.shared.geo().enableLocationUpdates()
}
}
- Fix race condition when setting the database merge policy eagerly loads the data stores
- Prevent fatal error when failing to open the databases
- Allow checking which regions are being monitored
- Allow checking which regions the device is inside of
- Allow setting the amount of regions to monitor
- Prevent queued events without an associated device
- Prevent
logCustom
usage before Notificare becomes ready
- Improve supported deep links validation
- Fix debug symbols search paths
- Stricter unlaunch flow
- Emit the
didChangeNotificationSettings
event when disabling remote notifications - Add opt-in flag to prevent file access restrictions for Core Data
- Prevent push registration race condition when enabling remote notifications
- Correctly track device on initial application open event
- Improved auto-config mechanism
- Improved action categories parsing
- Fix user validation request
- Fix cached language when the network request fails
- Include debug symbols in the distributed frameworks
- Fix store notification required view controller flag
- Fix main-thread warning on device registration
- Use YouTube privacy-enhanced mode
- Add user-level inbox module
- Add support for live activities
- Allow a context evaluation upon un-suppressing in-app messages
- Include the delivery mechanism for notification received events
- Add user-level inbox module
- Add support for live activities
- Fix notification settings update race condition
- Prevent WebView notifications content from being dismissed while the view is presented
- Add
Identifiable
compliance to applicable data models - Optional CoreNFC framework linking to support older devices
- Refactor internal modules to keep track of their instances
- Improve pass-support availability checks
- Fix locale-sensitive time formatting on
NotificareTime
objects
- In-app messaging module
- Add option to preserve existing notification categories
- Drop support for iOS 10
- Add option to preserve existing notification categories
- Fix in-app message action click event
- In-app messaging
- Monetise module
- Prevent internal main beacon region from triggering events
- Remove interruption level & relevance score from notification service extension
- Fix notification content when opening partial inbox items
- Fix marking partial items as read
- Improve ISO date parser
- Add safeguards and warnings for corrupted items in the inbox database
- Log events methods correctly throw when failures are not recoverable
- Improve session control mechanism
- Add
InAppBrowser
notification type - Aliased
WebView
action intoInAppBrowser
, aligning with the notification type - Ensure delegate methods are called on the main thread
- Include
Accept-Language
and customUser-Agent
headers - Improve
allowedUI
to accurately reflect push capabilities - Rename internal
AnyCodable
to prevent collisions - Expose unknown notification open events via
notificare(_:didOpenUnknownNotification:)
andnotificare(_:didOpenUnknownAction:for:responseText:)
- Launch each peer module sequentially to prevent race conditions
- Prevent multiple push registration events
- Prevent Apple-processed builds from modifying the SDK version
Please check our migration guide before adopting the v3.x generation.