This article contains the release notes for different versions of the Mobile SDK:
v3.8.1 February 2023
Change Type | Affected API / Item | Description |
---|---|---|
Integration support
|
All methods |
The version is available for all methods, including Carthage, CocoaPods, and manual. For more information, see SDK Installation for iOS. |
Bug Fix
|
IOS |
Minor updates to prevent crashes reported by a user. |
v3.7.7 December 17 2020
Change Type | Affected API / Item | Description |
---|---|---|
SDK Structure
|
iOS |
We changed our SDK structure from .framework to .xcframework to support the new arm64 architecture for the ios simulator (in Macs with the M1 processor). Action Needed: If you are using Push Notifications, reimport the Dynamic Yield framework (it is now DYAPI.xcframework instead of DYAPI.framework. For details see "Add Notification Content Extension" and "Add Notification Service Extension" in Enabling Push Notifications. |
Bug Fix
|
Android |
To resolve a bug in which the app's icon is not showing, you can add the icon to your project's drawable folder. The icon should have a transparent background and be named dy_notification_small_icon.png. |
API Documentation
|
Android |
We do not recommend using synchronized APIs, even though they are still supported. Therefore, we have marked them all as deprecated in the documentation. |
v3.7.6 November 9 2020
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix
|
iOS |
Fixed an issue in which clicking a native image template sometimes caused the client app to crash. |
Bug Fix
|
Android |
Fixed an issue in which push notifications were being sent to opted out users. |
v3.7.5 October 11 2020
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix
|
iOS |
Fixed an issue in which the SDK was sometimes crashing. |
v3.7.2 October 1 2020
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix
|
iOS |
Fixed an issue in which the SDK was sometimes crashing because of a memory issue. |
Bug Fix | getUserAffinityProfile in iOS and Android |
Fixed an issue in which the getUserAffinityProfile API was not working for EU customers |
Bug Fix | iOS and Android |
Fixed an issue in which users were not included in audiences even when the conditions were met. |
Bug Fix | Android | Fixed an issue in which the logs were crashing when completionHandler is null. |
v3.7.0 June 21 2020
Change Type | Affected API / Item | Description |
---|---|---|
Updated APIs |
Android and iOS sendRecommendationItem |
Enhances the recommendation API to allow you to filter the results using data from the current session. |
Bug Fix | iOS |
Fixes an issue in which getProductActivityData API sometimes did not send the timeframe and interest parameters. |
Updated APIs | Android and iOS |
All synchronous APIs now have the ability to run asynchronously as well using a callback function. |
v3.6.7 May 3 2020
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix | Android |
Fixes an issue where overlays were rendering in the wrong position. |
Bug Fix | iOS |
Removed a deprecated class (UIWebViewDelegate) from the SDK |
v3.6.6 February 16 2020
Change Type | Affected API / Item | Description |
---|---|---|
New Supported Integration | Android and iOS SDKs |
You can now run the Dynamic Yield SDK on mobile applications using the React Native framework. Note: This only supports data collection, recommendation campaigns, and variable sets. |
v3.6.5 December 8 2019
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix | Overlay | Fixed an issue that caused clicks on some overlays to not be counted correctly in reports. |
Bug Fix | Push Notifications (IOS 13) | Fixed an issue that resulted in some areas of push notifications not being displayed correctly in dark mode. |
v3.6.4 October 6 2019
Change Type | Affected API / Item | Description |
---|---|---|
New Feature | Push Notifications | Support for Push Notifications for iOS 13. |
New Feature | Push Notifications | Push notification button text is now available in Russian. |
Bug Fix | Recommendations |
Fixes a bug that causes recommendation callbacks to not be triggered when the recommendation request is invalid. |
v3.6.3 July 2 2019
Change Type | Affected API / Item | Description |
---|---|---|
New API | sendRecommendationRequest | An enhancement to the recommendations API enabling you to filter the results by SKU or Group ID. For details, see the iOS and Android API references. |
v3.6.2 June 12 2019 (hotfix)
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix – iOS only | User Stickiness in AB tests | Fixes an issue that may cause AB test variations to be re-evaluated in a new session, even when set to be sticky per user (multiple sessions). |
v3.6.2 June 2 2019 (hotfix)
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix – Android only | Implementation Helper | Fixes an SDK v3.6.1 issue that may cause the implementation helper to show empty logs. |
Bug Fix – Android only | pageView trackEvent | Fixes an issue that may cause errors in Android version 4.1 (Jelly Bean). |
v3.6.1 April 30 2019 (hotfix)
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix – Android only | setContextAndSecret | Fixes an SDK v3.6.0 issue that may cause an error when switching between Dynamic Yield sites. |
Bug Fix – iOS only | setSecretKey
pageView trackEvent setEvaluator |
Fixes an SDK v3.6.0 issue that may cause the app to crash when calling these APIs with wrong input parameters. |
Change Type | Affected API / Item | Description |
---|---|---|
API Parameter Change | loadWebView (iOS only) | Apple has started deprecating UIWebView and using it will show a warning. We changed the webview parameter type to WKWebView, which will be supported by Apple moving forward. The new parameter type is faster and uses less resources. Before:
After:
What does this mean for you? Dynamic Yield supports both parameter types, but as Apple will probably remove UIWebView in the future, you should start using WKWebView as soon as possible. |
Compiler warning reduction | Nullability warnings in XCode 10.2 (iOS) |
We have added notations to conform to XCode standards indicating whether a parameter may be null.
What does this mean for you? This will result in fewer nullability warnings. |
New APIs with callbacks (iOS) |
|
Another version of each of these APIs was added with a new callback parameter: completionHandler.
What does this mean for you? This allows you to write code in-line, that runs when the method operation has been completed instead of using a listener class. |
New APIs with callbacks (Android) |
|
Another version of each of these APIs was added with a new callback parameter: completionHandler.
What does this mean for you? This allows you to write code in-line, that runs when the method operation has been completed instead of using a listener class. |
v3.5.1 March 6 2019 (hotfix)
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix | Evaluators (Android only) | Fixes an issue that may cause the app to crash when running the setEvaluator method in Android only. This bug was introduced in Android SDK v3.5 |
v3.5.0 March 2019
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix | Custom Action (iOS) | Custom Action campaigns did not load for some users due the delegate method not being executed correctly. |
Enhancement |
Connect Device | The Preview & Implementation Helper experience was improved by connecting to the test device using a WebSocket connection. |
Feature | Implementation Helper | The Implementation Helper now presents the list of Audiences to which the current user belongs. |
New API | Dynamic Content (iOS, Android) | New tracking APIs for Dynamic Content experiences that are rendered programmatically:
|
v3.4.0 January 2019
This release involves the removal and replacement of some APIs and methods and will require minor modifications in your code by your developers.
Additionally, this version includes the new Mobile Implementation Helper to help validate your implementation of page context, events, and API calls.
Change Type | Affected API / Item | Description |
---|---|---|
API Change / Bug Fix (iOS) | getSmartObjectData | The function was only returning variables from the html tab. It now returns variables from all tabs (HTML, CSS, and JSON).
The structure of the return value has been changed |
Deleted API (Android) | public void setAutoPageViewsTracking(boolean enabled) | Remove any calls to this API. Calling this API will result in the following compile error:
“cannot find symbol method setAutoPageViewsTracking” |
Deleted API (Android) | public boolean trackPageView(String uniqueID, String name, String section, DYPageContext context) |
Replace any calls to this API with the trackPageView API that does not contain the name and section parameters: public boolean trackPageView(java.lang.String uniqueID, DYPageContext context) Calling the deleted API will result in the following compile error: |
Deleted API (Android) | public boolean setEvaluator(String key,JSONArray params) | Replace any calls to this API with the setEvaluator call that contains the saveBetweenSessions parameter.
public boolean setEvaluator(String evaluatorID, JSONArray params, boolean saveBetweenSessions) Calling the deleted API will result in the following compile error: |
Deleted Listener Method (Android) | public void experimentsUpdatedAndReady(); | Replace any implementation of this method with public void experimentsReadyWithState(DYExperimentsState dyExperimentsState)
Implementing the deleted method will result in the following compilation error: |
Deleted Listener Method (Android) | public void initReply(DYInitState reply); | Remove any implementations of this method. Implementing this method will result in the following compilation error: “Method does not override or implement a method from a supertype” |
Deleted Listener Method (Android) | public boolean shouldDYRender(String smartActionId); | Remove any implementations of this method. Implementing this method will result in the following compilation error: “Method does not override or implement a method from a supertype” |
Deleted API (iOS) | -(BOOL)pageView:(NSString* _Nonnull)uniqueID name:(NSString* _Nonnull)name section:(NSString* _Nonnull)section context:(DYPageContext* _Nullable)DYContext; |
Replace any calls to this API with the pageView API that does not contain the name and section parameters:
-(BOOL)pageView:(NSString*)uniqueId context:(DYPageContext*)DYContext; Calling the deleted API will result in the following compilation error: |
Deleted API (iOS) | setEvaluator:(NSString* _Nonnull) forParams:(NSArray* _Nonnull)params | Replace any calls to this API with the setEvaluator API that contains the saveBetweenSessions parameter:
-(BOOL)setEvaluator:(NSString*)evaluatorID forParams:(NSArray*)params saveBetweenSessions:(BOOL)save; Calling the deleted API will result in the following compile error: |
Deleted Delegate Method (iOS) | -(void)onInitReply:(InitReply)initStatus | Remove any implementations of this method. Note that implementing this method will not cause a compilation error, although it no longer exists. |
Deleted Delegate Method (iOS) | -(void)experimentsUpdatedAndReady | Replace any implementations of this method with:
-(void) experimentsReadyWithState:(ExperimentsState) Implementing this method will cause a compilation error in Swift, but only a warning in Objective-C. Swift error: Type ‘YOUR_CLASS’ does not conform to protocol ‘DYDelegateProtocol’ Objective-C warning: Class ‘YOUR_CLASS’ does not conform to protocol ‘DYDelegateProtocol’ |
Deleted Delegate Method (iOS) | -(BOOL)shouldDYRender: (NSString*)smartActionID; |
Remove any implementations of this method. Note that implementing this method will not cause a compilation error, although it no longer exists. |
Deleted Delegate Method (iOS) | -(void)onRecommendationResult:(NSArray *)recommendations; | Replace any implementation with the onRecommendationResult method that contains the widgetId parameter:
-(void)onRecommendationResult:(NSArray* _Nullable)recommendations forWidgetID:(NSString* _Nonnull)widgetID; Implementing this method will cause a compilation error in Swift, but only a warning in Objective-C. Swift error: Type ‘YOUR_CLASS’ does not conform to protocol ‘DYDelegateProtocol’ Objective-C warning: Class ‘YOUR_CLASS’ does not conform to protocol ‘DYDelegateProtocol’ |
v3.2.6 November 2018
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix | Dynamic Content (Android) | Dynamic content was not loading once users retuned from a previous screen. |
Bug Fix | Overlays (Android) | The background screen was still clickable while an overlay was displayed. |
Bug Fix | Notifications (Android 9) | The background screen was still clickable while an overlay was displayed. |
Bug Fix | Dynamic Content (iOS) | Dynamic Content of type ‘image’ was crashing when a fallback URL was requested. |
Bug Fix | Overlays (iOS) | Overlays did not always have a change to load when there were quick successive pageviews. |
Bug Fix | Audiences (iOS) | Not all users were added to an audience when condition included geographic location. |
v3.2.3 September 2018
Change Type | Affected API / Item | Description |
---|---|---|
Bug Fix | Dynamic Content (iOS only) | Fixed issue where Dynamic Content of type image sometimes crashed when loading fallback URL |
Bug Fix | Overlays (iOS only) | Fixed issue where Overlays sometimes didn’t load if there were multiple page views that occurred in quick succession |
Bug Fix | Audiences | Fixed issue where users weren’t added to audiences due to missing init data |
v3.2.2 August 2018
Change Type | Affected API / Item | Description |
---|---|---|
API Change | DyPageContext | The API now supports the page context type “other” |
New Mobile Template | Mobile Messaging Campaigns | A new template for mobile messages called Native iOS Messaging Bar. Designed to provide a simple message bar at the bottom of your application. Requires SDK 3.2.2 to work properly. |
Bug Fix | Mobile Overlays (iOS only) | Resolved the issue in which mobile overlays using the bottom position were not aligning properly. |
v3.2.0 June 2018
Change Type | Affected API / Item | Description |
---|---|---|
API Behavior Change | iOS: setSecretKey
Android: setContextAndSecret |
Let’s you switch to a different Dynamic Yield app (using a different secret key). |
New APIs | consentOptin
consentOptout |
Allow visitors to opt in or out of data tracking. |
General | Overlays | Added support for overlays rendered using native iOS and Android UI components. Supports the Native iOS and Native Android templates. |
Bug Fix | – | A number of fixes to resolve a bug related to JSContext timers that caused the app to crash is some cases (timerDidFire issue). |
V3.1.4 April 2018
Change Type | Affected API / Item | Description |
---|---|---|
New API | onRecommendationResult | Recommendation delegate method with a widgetID |
New API | getDYID | Returns the current DYID |
API Update | All iOS APIs | Added nullability marks to all mobile iOS APIs |
Improvement | iOS SDK | File writes occur less frequently |
Bug Fix | – | Fixed source of some crashes based on JSContext timers |