All notable changes to this project will be documented in this file.
- [iOS] Potential issues with checking if the app is launched in the background. The SDK set the background mode to true on
UIScene
and SwiftUI based apps. It could cause the app to freeze.
- [iOS] Optimization of the registration for push notifications process. The cache for that request was erroneously removed in version 4.23.0 of the native SDK.
- [Android] workManager npe - for android api lower than 24
- Update of native SDK's dependencies.
- [iOS] Some potential issues with possible database corruption.
- [Android] Notification callback issue when app was in foreground.
Synerise.Settings.inAppMessaging.contentBaseUrl
option in settings to let you set the base URL to use for all relative URLs in an in-app message's creation.Synerise.Client.updateAccountBasicInformation(context, onSuccess, onError)
method. The new method updates anonymous users.ClientAccountUpdateBasicInformationContext
model correlated with the newSynerise.Client.updateAccountBasicInformation(context, onSuccess, onError)
method.
- [Android] Fresco library is now updated to 3.2.0.
- Optimization of the In-app messaging module (variants are no longer assigned once more when the profile's UUID changes).
- Improvements to stability.
- [Android] Null pointer exception while launching callback from push notification in some cases.
- [iOS] Potential issue with slow SDK initialization.
- [iOS] Potential issues with Simple Authentication requests.
- We added new parameters to the push.click event:
clickSource
,actionType
,url
andactionButtonTitle
.
- Update of native SDK's dependencies.
IMPORTANT: The SDK version 0.21.0 has been omitted for technical reasons.
- We added a
testDelivery
andjourneyId
parameters to tracked notification events (push.view
,push.click
, and so on). It describes if the notification was sent as a test notification from a campaign. - We added a new
Synerise.content.generateDocumentWithApiQuery(apiQuery, onSuccess, onError)
method. It is analogous toSynerise.content.generateDocument(slug:onSuccess:onError:)
, but can contain more context parameters provided in a query object. - We added a new
Content.generateScreenViewWithApiQuery(apiQuery, onSuccess, onError)
method. It is analogous toSynerise.content.generateScreenView(feedSlug:onSuccess:onError:)
, but can contain more context parameters provided in a query object. - Anchors from Drag & Drop Builder in the In-App editor are interpreted as URL or as deeplink depending on the value.
- We added validation of reserved parameters in events. Now, if a parameter is forbidden, it is removed from the parameters and a log is printed.
- Stability improvements.
- Update of native SDK's dependencies.
- [iOS] Some potential issues with retrieving system push consent by the SDK. The SDK set the constent to false when the general consent for the application was enabled, but at least one of the following options was disabled: alerts, sounds, badges.
Synerise.Settings.tracker.eventsTriggeringFlush
option in settings to let you set the list of event actions which will trigger instant sending of all events in the queue. The default array contains only push event's actions.
- All events connected with push campaigns will flush the queue and send events immediately.
- Improvements to push notifications registration.
- Stability improvements.
- Update of native SDK's dependencies.
- [Android] Deeplink action when clicking on push notification will directly open in app instead of prompt between app/browser. We set packageName to intent.
- [Android] Updated proguard rules for joda.time, retrofit and gson.
- [iOS] Some potential issues with notification processing in
NotificationServiceExtension
. - [iOS] Issue with non-scrolling in-app messages.
- Global Control Group support for in-app messages. From now on, you can use this feature in in-app messaging communication. This lets you take your marketing efforts to the next level and provides a solid foundation for accurate measurement of campaign effectiveness. Read more at https://hub.synerise.com/docs/settings/configuration/global-control-group/.
- [iOS]
Synerise.Settings.sdk.localizable
option in settings to let you localize some strings displayed by the SDK.
- Improved mechanism for checking capping in in-app messages. The number of views no longer resets when the account's UUID changes.
- The delegate method
snr_registerForPushNotificationsIsNeeded()
is invoked when the SDK is initialized completely. - When the
Client.registerForPush(registrationToken:mobilePushAgreement:success:failure:)
method fails, it invokes thesnr_registerForPushNotificationsIsNeeded()
delegate method after a short delay. clientId
property in theToken
model.- Update of native SDK's dependencies.
IMPORTANT: Due to changes in the handling of actions for URLs and deep links in Synerise campaigns, we strongly recommend comparing your configuration with the SDK documentation. Review the changes from the previous SDK version integrated into your application here: https://hub.synerise.com//developers/mobile-sdk/campaigns/action-handling/
- Changes in handling actions from campaigns (read important note above).
- Update of native SDK's dependencies.
- [iOS] Issue with location of some SDK files in the Documents directory. The old location caused the SDK files to be visible in the shared documents directory if the host application file sharing was enabled.
- [iOS] Potential issue with native notification buttons when Simple Push campaign contained Rich Media (Single Media) or had a custom notification category identifier.
- We added a new
Synerise.Content.generateDocument(slug:onSuccess:onError:)
method. It's analogous toSynerise.Content.getDocument(slug:onSuccess:onError:)
. The old method is deprecated. The new method generates the document that is defined for the provided slug. - We added a new
Synerise.Content.getRecommendationsV2(options:onSuccess:onError:)
method. It's analogous toSynerise.Content.getRecommendations(options:onSuccess:onError:)
. The old method is deprecated. The new method gets recommendations that are defined for the options provided. - We added a new
Synerise.Content.generateScreenView(feedSlug:onSuccess:onError:)
method. It's analogous toSynerise.Content.getScreenView(onSuccess:onError:)
. The old method is deprecated. The new method generates a customer's highest-priority screen view campaign that is defined for the provided slug. - We added models correlating with new methods:
ScreenView
,Document
.
Synerise.Content.getDocument(slug:onSuccess:onError:)
is deprecated now.Synerise.Content.getDocuments(apiQuery:onSuccess:onError:)
is deprecated now.Synerise.Content.getRecommendations(options:onSuccess:onError:)
is deprecated now.Synerise.Content.getScreenView(onSuccess:onError:)
is deprecated now.- Update of native SDK's dependencies.
Synerise.Settings.inAppMessaging.shouldSendInAppCappingEvent
option in settings to enable or disable sending inApp.capping event by the SDK.
- Update of native SDK's dependencies.
- Improvements to stability.
- New authentication mechanism - Simple Authentication. It allows identification of customers without implementing more complicated processes such as RaaS, OAuth, or authenticating by third party services, for example Facebook or Apple. Simple Authentication needs only two methods -
Synerise.Client.simpleAuthentication(data:authID:onSuccess:onError:)
to recognize a customer andSynerise.Client.isSignedInViaSimpleAuthentication()
to check if the customer is signed in and uses the Simple Authentication feature. TheSynerise.Client.signOut()
method and similar methods are a common way to sign out and clear the user context.
- We changed nullability of
mobileAgreements
parameter in aSynerise.Notifications.registerForPush(registrationToken:success:failure:)
method. It doesn't require themobilePushAgreement
parameter (it can be null) and thanks to that, it doesn't update the customer in the database. - Update of native SDK's dependencies.
Synerise.isInitialized
method checks native and javascript module if it is completely initialized.
- We added a new
Client.signOut(mode:fromAllDevices:onSuccess:onError:)
method. It is analogous to Client.signOut(mode:). It is an asynchronous method and notifies the backend that the client is signed out and determines if all other devices should be signed out too. Remember, signOutWithSessionDestroy mode clears the anonymous session and regenerates the client UUID. TheClient.signOut(mode:)
method is removed now. - TSDoc code documentation in modules for better syntax promting.
Client.deleteAccount(password:onSuccess:onError:)
is deprecated now.Client.deleteAccountByOAuth(accessToken:onSuccess:onError)
is deprecated now.Client.deleteAccountByFacebook(facebookToken:onSuccess:onError)
is deprecated now.- Update of native SDK's dependencies.
- Improvements to stability.
- [iOS]
PromotionImage
property mapping inPromotion
object.
RecommendationSeenEvent
andRecommendationClickEvent
have new constructors, same as parentRecommendationViewEvent
class before.- Update of native SDK's dependencies.
- Improvements to stability.
RecommendationViewEvent
class.
- Voucher objects mapping.
Token
object structure.- Update of native SDK's dependencies.
- Improvements to stability.
- In-app messaging support.
Injector.fetchBanners
method.Injector.getBanners
method.Injector.showBanner
method.
- [Android] Fix initialization with custom url.
- Update of native SDK's dependencies.
- Improvements to stability.
- Fix issue with
ClientAgreements
model with conversion for native modules communication.
- [Android] Fix issue with push notification click tracker.
- [iOS] Potential issue with sending push.view events in notification services.
- [iOS] Some clients have issue with correct value of sdkVersion in AppStarted event, which propably occurs depending to project settings. We have changed it to save hardcoded value so it will solve those issues permanently.
- Update of native SDK's dependencies.
- Update of native SDK's dependencies.
- [Android] Added action_view intent for deeplinks on Android.
- [iOS] Notification category collision when Simple Push campaign contains configured buttons and Rich Media (Single Image).
- Update of native SDK's dependencies.
- React Native Reload support.
- [iOS] Notification responses (tap on push, push buttons etc.) are supported now.
- Update of native SDK's dependencies.
Client.signInConditionally
method.Client.authenticate
method.Client.authenticateConditionally
method.Client.requestAccountActivationByPin
method.Client.confirmAccountActivationByPin
method.Promotions.activatePromotionsBatch
method.Promotions.deactivatePromotionsBatch
method.- Client State Change listener in
Synerise.Client
module. - Promotion models update.
- Update of native SDK's dependencies.
- Improvements to stability.
Content.getScreenView
method.
Client.requestEmailChange
method.- Support for Recommendations v2.
- Update of native SDK's.
- Improvements to stability.
- Update of native SDK's.
- Improvements to stability.
- Improvements to stability.
- Information about device root is moved to AppStarted event.
- New option to set whether events should be sent when server time synchronization has failed -
Synerise.Settings.tracker.isBackendTimeSyncRequired
. Client.deleteAccountByIdentityProvider
method.
- Support for encrypted notifications (enabled by
Synerise.Settings.notifications.encryption
). [1]
[1] Please read full documentation: iOS: https://help.synerise.com/developers/ios-sdk/configure-notifications/#configuring-notification-encryption Android: https://help.synerise.com/developers/android-sdk/configure-notifications/#configuring-notification-encryption
- CocoaPods config files.
Synerise.Client.authenticateByAppleSignIn
method.Synerise.Client.authenticateByAppleSignInIfRegistered
method.Synerise.Injector.authenticateByOAuthIfRegistered
method.Synerise.Injector.deleteAccountByOAuth
method.Synerise.Injector.deleteAccountByAppleSignIn
method.Synerise.Settings.sdk.shouldDestroySessionOnApiKeyChange
option in settings.
Synerise.Injector.fetchBanners
method.Synerise.Injector.getBanners
method.Synerise.Injector.setShouldBannerPresentFlag
method.
Synerise.Content
module.Synerise.Client.destroySession
method.Synerise.Client.regenerateUUIDWithClientIdentifier
method.
- parsing custom parameters by event constructor on iOS.
Synerise.Settings
module issues.
- OAuth/Facebook authentication.
- Walkthrough campaign.
- Walkthrough listener in
Synerise.Injector
module. Synerise.Settings.injector.automatic
option in settings.- Vouchers methods in
Synerise.Promotions
module. Synerise.changeClientApiKey
method.
- Prevention from SDK initializing multiple times (react native fast refresh).
- Tags removed from some models (
ClientAccountUpdateContext
,ClientAccountRegisterContext
).
Synerise.Notifications
module.Synerise.Promotions
module.- Campaigns (Simple Push, Banner, Mandatory Update).
- Settings for campaigns.
- Handling URL and DeepLink actions from campaigns.
- Synerise initialization (
Synerise.onReady
andSynerise.onError
callbacks).
- CocoaPods podspec file.
- CocoaPods podspec file path.
- npm package structure
- ios/android native modules.
- README to npm package.
- iOS Deployment Target to 9.0.
The first version of react-native-synerise-sdk
module