- Features:
- Implement Clickable image through CustomJson [RMCCX-7233]
- Implement Dark background through CustomJson [RMCCX-7328]
- Fixes:
- Fix Clickable image behaviour for invalid url [RMCCX-7351]
- Features:
- Added support for PushPrimer Campaign using CustomJson [RMCCX-6702]
- Prevent showing Push Priemr Campaign if Notificaation Permission was granted already [RMCCX-6707]
- Added CustomJson feature for RMC SDK users [RMCCX-6712]
- Redirect user to App Notification Permission Settings if permission was denied previously in Push Primer [RMCCX-6710]
- Send RMC impression event to RAT [RMCCX-6939]
- Send RMC push primer event to RAT [RMCCX-6938]
- Implement console warning if LogEvent is called before calling RegisterPreference [RMCCX-7109]
- Improvements:
- Improve Documentation for IAM [RMCCX-6705]
- Improvements:
- Prevent sending impressions for expired campaigns [SDKCF-6910]
- Improvements:
- Added PrivacyInfo.xcprivacy file [SDKCF-6897]
- Features:
- Added User preference input in Sample App [SDKCF-6641]
- Added device_id to all the RAT events [SDKCF-6625]
- Added device_id to DisplayPermission request header [SDKCF-6624]
- Prevent calling
configure()
then RMC module is integrated [SDKCF-6710] - Added rmcsdk version parameter to all api calls [SDKCF-6709]
- Improvements:
- Retaining API calls until configure() is called [SDKCF-6812]
- Fixes:
- Fixed Xcode 15 beta errors [SDKCF-6692]
- Fixed Finding RMC Bundle [SDKCF-6751]
- Fixed Loading cached user data before IAM initialisation [SDKCF-6826]
- Breaking changes:
- Update Swift version support for package to 5.7.1 [SDKCF-6515]
- Features:
- Added SwiftUI support for Sample App [SDKCF-5026]
- Added SwiftUI support for Tooltip feature [SDKCF-5025]
- Bug fixes:
- Removed "last user" cache to avoid overwriting anonymous user cache during init [SDKCF-6409]
- Added display permission service to perform ping on tooltip dispatcher [SDKCF-4964]
- Fix broken UIKit framework UI on dark mode [SDKCF-6587]
- Improvements:
- Created new test scheme to combine unit test and UI test results [SDKCF-6356]
- Refactored Event classes and removed unused code [SDKCF-6376]
- Update api documentation [SDKCF-6592]
- Improved unit test code coverage to
- EventType.swift [SDKCF-6378]
- CustomAttribute.swift [SDKCF-6379]
- UserInfoProvider.swift [SDKCF-6380]
- EventMatcher.swift [SDKCF-6390]
- ConfigurationService.swift [SDKCF-6388]
- UserDataCache.swift [SDKCF-6384]
- MessageMixerService.swift [SDKCF-6386]
- CampaignRepository.swift [SDKCF-6387]
- SlideUpViewPresenter.swift [SDKCF-6383]
- UILabel+IAM [SDKCF-6385]
- CommonUtility [SDKCF-6381]
- Event [SDKCF-6376]
- AppStartEvent [SDKCF-6376]
- CustomEvent [SDKCF-6376]
- PurchaseSuccessfulEvent [SDKCF-6376]
- LoginSuccessfulEvent [SDKCF-6376]
- CampaignDispatcher [SDKCF-6452]
- AlertPresentable [SDKCF-6375]
- ConfigurationManager [SDKCF-6451]
- HTTPRequestable [SDKCF-6389]
- Router [SDKCF-6382]
- ToolTipView [SDKCF-6377]
- Features:
- Added new API method to close displayed tooltips [SDKCF-6027]
- Added contexts validation for tooltip campaigns [SDKCF-6028]
- Added a feature flag to enable/disable the Tooltip feature [SDKCF-6075]
- Added tracking of opt-in/opt-outs in Push Primer feature [SDKCF-6026]
- Improvements:
- Restored tab bar items support. Added UITabBar extension method for convenience [SDKCF-6134]
- Added support for screen orientation changes when using Tooltip feature [SDKCF-6177]
- Bug fixes:
- Fixed an edge case of not readable status bar when campaign message is displayed [SDKCF-5134]
- Improvements:
- Sample app improvements
- Features:
- Added Push Primer feature [SDKCF-5631]
- Added a possibility to set subscription ID and config URL in runtime [SDKCF-5614]
- Improvements:
- Enable triggers validation for test campaigns [SDKCF-5776]
- Refactor for Xcode 14 compatibility [SDCFK-5611]
- Integrated with Emerge Tools [SDKCF-5346]
- Added a warning when
registerPreference()
is called beforeconfigure()
- Bug fixes:
- Fixed Opt-out message visibility on a dark background [SDKCF-5620]
- Fixed an issue when test campaigns were not displayed [SDKCF-5636]
- Improvements:
- Updated information sent to Analytics [SDKCF-5252]
- Display impression analytics event is now sent when campaign message appears [SDKCF-5252]
- Bug fixes:
- Fixed issues with unit tests on Xcode 13.3 [SDKCF-5124]
- Breaking changes:
- Aligned public API with Android IAM SDK [SDKCF-4940]
RInAppMessagingDelegate
andRInAppMessagingErrorDelegate
have been removed.inAppMessagingShouldShowCampaignWithContexts()
delegate method has been replaced withonVerifyContext
callback variable..inAppMessagingDidReturnError()
delegate method has been replaced witherrorCallback
variable.
- Aligned public API with Android IAM SDK [SDKCF-4940]
- Features:
- Implemented new UX features - Campaigns with no end date, infinite impressions and no ❌ button [SDKCF-5003]
- Improvements:
- Improved test campaigns handling [SDKCF-5027]
- Added border in campaign buttons when their color is similar to message body background color [SDKCF-4859]
- Xcode 13 compatibility
- Removed Codecov support in favor of SonarQube coverage reports
- Switched to shared bitrise yaml file
- Bug fixes:
- Fixed impression counting when application was terminated during campaign display
- Improvements:
- Campaign UI has been updated to be in line with internal Rakuten UI design guide [SDKCF-4471]
- Added Swift Package Manager (SPM) support [SDKCF-4388]
- Improved network request error handling [SDKCF-4728] [SDKCF-4637]
- Added Xcode requirements to README [SDKCF-4790]
- Integrated SonarQube to track SDK code quality [SDKCF-4693]
- Bug fixes:
- Custom event attributes are now handled as case insensitive [SDKCF-4550]
- Fixed test campaign triggers [SDKCF-4525]
- Breaking changes:
- The minimum supported OS version is now iOS 12.0 [SDKCF-4361]
- The
registerPreference()
API method now requires aUserInfoProvider
object [SDKCF-3970] - Removed all Rakuten ID references. The value used as Rakuten ID should be used as the User ID instead. User ID should be treated as any unique member identifier.
- Improvements:
- Updated user handling to align with the Android IAM SDK. The
registerPreference()
API method now requires aUserInfoProvider
object, which must be kept up-to-date in your app code. See the README's registerPreference() description. [SDKCF-3970] - Added UI tests [SDKCF-2246]
- Integrated RSDKUtils library to replace common code [SDKCF-4351]
- Updated response models to use non-optionals [SDKCF-4017]
- Test campaigns are no longer cached.
- Updated user handling to align with the Android IAM SDK. The
- Bug fixes:
- Fixed possible race condition crash in LockableObject [SDKCF-3987]
- Fixed issue with opt-out logic that occurred on user change [SDKCF-3720]
Breaking change: Changed public Identification
enum member easyId
to idTrackingIdentifier
.
- Features:
- Added support for ID tracking identifier. [SDKCF-4072]
- Improvements:
- Modified AtomicGetSet wrapper to use a concurrent queue with barrier to ensure safe writes.
- Increased HTTP resource request timeouts to more reasonable values.
- Added mobsfscan automatic code scanning for security issues.
- Bug fixes:
- Fixed large image display issue in campaigns. [SDKCF-4022]
- Improvements:
- Changed campaigns to not display when attached image cannot be downloaded. [SDKCF-3977]
- Changed campaigns to not display upon display permission request failure. [SDKCF-3976]
- Increased clickable area of the IAM close button "x". [SDKCF-3958]
- Fixed campaign view incorrectly being horizontally scrollable on iPad in landscape orientation [SDKCF-4020]
- Improvements:
- Added recommendation to README that apps should use a remote feature flag to enable/disable the SDK. [SDKCF-3938]
Breaking change: Config API contract has changed and now requires the v2 GET endpoint. The SDK will not work with the v1 endpoint.
- Improvements:
- Updated company name references. [SDKCF-3550]
- Added handling for getConfig response status codes 400 and 404. [SDKCF-3884]
- Changed Config API call to be a /GET with query params. This allows the backend to filter requests if required. [SDKCF-3652]
- Added handling for "429 Too Many Requests" response to Config/Ping API requests. When status code 429 is received by the SDK it will start expontential backoff (plus a random factor) retries to space out the requests to the backend. [SDKCF-3654]
- Campaign opt-out & max impression tracking logic is now handled solely on client side. This change reduces the backend's load per request. [SDKCF-3656]
- Added support for rollout percentage value received in Config API response. This allows the backend to gradually increase campaign distribution. [SDKCF-3663]
- Added subscription key in Config API request header to enable better filtering of requests. [SDKCF-3716]
- Bug fixes:
- Removed canOpenURL check for redirect and deeplink buttons [SDKCF-3848]
- Fixed rarely occurring threading crashes in dependency manager by using a static queue for access. [SDKCF-3646]
Breaking change: Minimum supported iOS version is now 11.0 [SDKCF-3182]
- Status bar overlay in Full Screen campaigns is now present in all layout types. The color is adjusted to status bar style (dark or light) - this feature is available only on iOS 13+. [SDKCF-3203, SDKCF-3175]
- Added new API method to close campaign's message manually [SDKCF-3201]
- Improvements:
- Added integration tests [SDKCF-3109]
- Moved CI from Travis to Bitrise
- Improved README [SDKCF-3062, SDKCF-3179]
- Improved Sample app secrets setup
- Reduced a chance for user to change screen when campaign is being displayed/animated [SDKCF-3027]
- Bug fixes:
- Fixed an issue when SDK localization files interfered with host app's localization [SDKCF-3139]
- Fixed campaign dispatch logic that might have caused an unwanted delay between messages [SDKCF-3007]
- Added a campaign's context feature - a phrase enclosed in square brackets added to the campaign's title. Campaigns with contexts can be optionally validated by implementing a new method from the SDK. Validation occurs before displaying the message and decides about showing that message or not. [SDKCF-2871]
- Improvements:
- Updated the locale parameter format in backend http requests [SDKCF-2401]
- Improved unit tests code coverage [SDKCF-2245]
- Improved campaign synchronization logic [SDKCF-2467]
- Other minor improvements like: using xcconfig to set up secrets, Xcode 12 updates
- Bug fixes:
- Fixed a bug where bottom body margin in Modal campaigns layout was missing [SDKCF-2496]
- Full Screen campaign content is now not overlapping with system status bar [SDKCF-2444]
- Fixed an issue when UI was blocked because of no internet connection [SDKCF-2842]
- Fixed an issue when a user was able to see a message from previous user's cached data [SDKCF-2535]
- Initial open sourced release
- This version is a major refactor. Highlights include:
- Improved maintainability, testability and error handling
- Removed 3rd party dependencies
- Added CI automation with Fastlane/travis