CHANGELOG

5.6.1 (2023-10-17)

SDK

- Fix: Fixed getUsername unicode issue

5.6.0 (2023-10-17)

SDK

- Fix: Updated JS Bridge after fixing linting issues.

5.5.0 (2023-10-16)

SDK

- Fix: Fix character escaping issue in Universal bridge (sendJsonToMiniApp)

5.4.0 (2023-08-28)

SDK

  • Feature: Added a new interface downloadMiniApp(appId:versionId:completionHandler:) to download Miniapp from platform in background if needed.
  • Feature: Added a utility method to know if Miniapp has beend downloaded properly. isMiniAppCacheAvailable(appId: String, versionId:)
  • Refactor: Updated unzip Miniapp method with optional completion handler that will let the host app know if the download is success. unzipMiniApp(fileName:miniAppId:versionId:completionHandler:)

Sample App

  • Feature: Added Menu in list view to Download and check if Miniapp is downloaded already.

5.3.1 (2023-08-02)

SDK

  • Feature: Updated loadFromBundle(miniAppManifest:completionHandler) interface with optional MiniAppManifest object.
  • Feature: Added a new property in MiniAppViewable class to Enable/Disable 3D touch for the Miniapp that is launched.
  • Fix: Enable variables to public for MAAnalyticsInfo

Sample App

  • Feature: Updated Sample app to send miniAppManifest while loading from bundle

- Feature: Hardcoded permissions for loadFromBundle approach

5.3.0 (2023-07-25)

SDK

  • Deprecated: create(appInfo: ,queryParams: ,completionHandler: ,messageInterface: ,adsDisplayer: ,fromCache: ) inMiniApp` class.
  • Deprecated: getUniqueId(completionHandler:) in MiniAppMessageDelegate protocol is deprecated. You should use getMessagingUniqueId(completionHandler:) instead.
  • Feature: Added new HostAppThemeColors model class to hold the primary and secondary color strings in Hex format.
  • Feature: Added a new optional interface getHostAppThemeColors(completionHandler:) in MiniAppMessageDelegate protocol, to fetch the host app theme colors.
  • Feature: Added new isDarkMode interface to get the mode set in Host app / Device.
  • Feature: Added new public interface didReceiveMAAnalytics(analyticsInfo: MAAnalyticsInfo, completionHandler: @escaping (Result<MASDKProtocolResponse, MAAnalyticsError>) -> Void) for host app to receive the MAAnalyticsInfo info for the events from MiniApps.
  • Feature: Added a new public interface in MiniappView class. loadFromBundle(completionHandler:). Now Native/Host apps can load a Miniapp from bundle.
  • Feature: Added a new public interface sendInfoToHostApp(info: UniversalBridgeInfoParameters, completionHandler: @escaping (Result<MASDKProtocolResponse, UniversalBridgeError>) -> Void) in UniversalBridgeDelegate protocol. Now MiniApps can share the information to host app as structured object of type UniversalBridgeInfoParameters having parameters [key, value and description].

Sample App

  • Feature: Implemented method getHostAppThemeColors(completionHandler:) in the sample app to fetch the host app theme colors and pass it to MiniApps.
  • Feature: Added qa settings page ‘Theme Color’ to test sending host app theme primary and secondary colors.
  • Feature: Added implementation in Demo app under Features tab to show how a Miniapp can be loaded from Bundle.
  • Feature: Added qa settings page ‘Analytics Info’ to view the analytics events recieved from the MiniApp.

5.3.0-alpha (2023-07-12)

⚠️ This version is an internal release. It is not fully tested and can produce unexpected behaviors. Due to potential changes, the full change log will be provided with the final version. Adding a dependancy to this alpha version is discouraged. This version improves MiniApp loading from cache and brings several UI improvements features and deprecation.

5.2.0 (2023-03-30)

SDK

  • Fix: Fix Secure storage ready notification
  • Refactor: Update the Custom permissions error messages format
  • SPM: Moved Admob dependency to the official SPM repo
  • Fix: Updated sendJsonToMiniApp to MiniAppManageDelegate that will help the old architecture to use it.

Sample App

  • Bugfix: Mask Project ID & Subscription Key in Settings

- Update: Enabled App Tracking Tansperancy, with ‘Privacy - Tracking Usage Description’ and authorisation request propmpt on launch.

5.1.0 (2023-01-30)

SDK

  • Update: Added allEmailList field in MAContact to support multiple emails of a specific contact.
  • Feature: Added a new optional interface func closeMiniApp(withConfirmation: , completionHandler:) in MiniAppMessageDelegate to support the close mini-app action from MinApps.
  • Feature: Universal Bridge support for receiving the Json or string content from the MiniApp to host app.
  • Feature: Added new public protocol UniversalBridgeDelegate which is confirmed by MiniAppMessageDelegate, further added public interface sendJsonToHostApp(info:, completionHandler:) -> Void) in UniversalBridgeDelegate which can be implemented in host app to receive the string content from mini app and use in host app through Universal Bridge.
    Show code
func sendJsonToHostApp(info: String, completionHandler: @escaping (Result<MASDKProtocolResponse, UniversalBridgeError>) -> Void) {
    onBridgeJsonString?(info)
    completionHandler(.success(.success))
}

  • Feature: Universal bridge support for sending the Json/String content to MiniApp from host app which will have the public interface.
Show code “`swift let params = MiniAppParameters.default( config: MiniAppConfig(config: Config.current(), messageInterface: self), appId: "your-miniapp-id” ) let miniAppView = MiniAppView(params: params) self.view.addSubview(miniAppView) miniAppView.frame = self.view.bounds miniAppView.sendJsonToMiniApp(string: “”) “`

5.0.0 (2022-11-04)

SDK

  • Feature: Support for showing multiple MiniApps at the same time. Added MiniAppView which will replace MiniApp.shared().create(). From now on create will be deprecated.
    Show code
let params = MiniAppParameters.default(
    config: MiniAppConfig(config: Config.current(), messageInterface: self),
    appId: "your-miniapp-id"
)
let miniAppView = MiniAppView(params: params)
self.view.addSubview(miniAppView)
miniAppView.frame = self.view.bounds

// load the miniapp (default)
miniAppView.load { _ in
  //...
}

  • Feature: Async/Await Support with MiniAppView‘s loadAsync that will load the MiniApp.
    Show code
// using closure
miniAppView.load { success in
  switch result {
    case .success:
      // miniAppView is loaded
    case let .failure(error):
      print("error: \(error.localizedDescription)")
  } 
}

// using async/await
Task {
    do {
        let result = try await miniAppView.loadAsync()
        //...
    } catch {
        print("error: \(error.localizedDescription)")
    }
}

let config = MiniAppConfig(config: Config.current(), messageInterface: self)
let params = MiniAppParameters.default(
    config: config,
    appId: "your-miniapp-id"
)

  • Feature: Added a new additional initializer to load MiniApps from URL for local testing.
    Show code
// with url
let urlParams = MiniAppParameters.url(
    config: MiniAppConfig(config: Config.current(), messageInterface: self),
    url: URL(string: "http://localhost:3000")!
)
let miniAppView = MiniAppView(params: urlParams)

  • Feature: Support for SwiftUI. Added MiniAppSUIView to the UI module that conforms to UIViewRepresentable and will autoload when added.
    Show code
struct Content: View {

  var params: MiniAppParameters

  var body: some View {
    MiniAppSUIView(params: params)
  }

}

Sample app

  • Feature: New demo app interface with List I and List II (multiple miniapp support demo) and reworked with SwiftUI

4.3.0 (2022-08-08)

SDK

  • Fix: Secure storage feature bug fixes

4.2.0 (2022-06-24)

SDK

  • Feature: Added a new interface getMessagingUnique in MiniAppMessageDelegate for future support of MAUID v2 and another interface getMauid in MiniAppMessageDelegate for retrieving the MAUID
  • Feature: Added file download error type for HTTP errors: MASDKDownloadFileError.downloadHttpError.
  • Fix: Updated error type names for MASDKDownloadFileError so that they are correctly parsed by JS SDK.
  • Feature: Added MiniAppSecureStorage for MiniApps to store data safely. MiniAppSdkConfig was extended by storageMaxSizeInBytes to set the maximum available space in bytes for secure storage.
  • Feature: Added miniAppShouldClose interface in MiniAppNavigationBarDelegate which would help the host app to check if any alert need to displayed before closing the MiniApp
  • Enhancement: Replaced Secure Storage from a file storage solution to store data in a sqlite database
  • Feature: Added miniAppTooManyRequestsError error in MASDKError. This error will be thrown from SDK if any API from platform sends 429 status code. This could clear specific cached mini-app if 429 is received

Sample app

  • Enhancement: Added GET MESSAGING UNIQUE ID and GET MAUID for retrieving the ID’s. (Messaging Unique ID for now will return the same as Unique ID)
  • Enhancement: Added a Wipe Secure Storages button to Settings/QA to remove all secure storages
  • Enhancement: Added GET MESSAGING UNIQUE ID and GET MAUID for retrieving the ID’s. (Messaging Unique ID for now will return the same as Unique ID)
  • Feature: Added support for Mini Apps to download Base64 data: URIs with the MiniApp.downloadFile feature.
  • Bugfix: Replaced UIActivityController with a custom one that overrides the dimiss function so only the activity will be closed.
  • Feature: Added support to display error miniAppTooManyRequestsError type.

4.1.0 (2022-04-11)

SDK

  • Feature: Added support for Swift Package Manager
  • Feature: Updated create method with optional fromCache variable that helps to load the mini-app from cache. MiniApp#create(appId:versionId:queryParams:completionHandler:messageInterface:adsDisplayer:fromCache) MiniApp#create(appInfo:queryParams:completionHandler:messageInterface:adsDisplayer:fromCache)
  • Feature: Added a new interface downloadFile(fileName:url:headers:completionHandler:) in MiniAppMessageDelegate to support downloadFile behavior with custom file.

4.0.0 (2022-03-01)

SDK

  • Feature: Added support for Carthage
  • Feature: Changed deployment target from 13.0 to 14.0

Sample app

  • Bugfix: Added error message when name and email are invalid when adding contacts
  • Enhancement: Add an alert when successful shared content (file downloads)

3.9.1 (2022-01-17)

  • Fix: Added weak references fix for clearing the RealMiniAppView object from memory.

3.9.0 (2021-12-17)

SDK

  • Feature: Added support for Manifest localization by updating getMiniAppManifest(miniAppId:miniAppVersion:languageCode:) interface
  • Feature: Added support for taking picture from camera in Mini App.
  • Feature: Added promotionalImageUrl and promotionalText in MiniAppInfo model.
  • Update: Updated getHostEnvironmentInfo(completionHandler:) interface to return MAHostEnvironmentInfo details with default locale to miniapp

Sample app

  • Feature: Added production and staging toggle to change environments.
  • Feature: Added promotional preview by enabling enableSharePreview when launching the MiniApp with MiniAppUI.

3.8.1 (2022-01-17)

SDK

  • Fix: Added weak references fix for clearing the RealMiniAppView object from memory.

3.8.0 (2021-11-09)

SDK

  • Feature: MiniApp custom events (pause, resume, external webview closed)
  • Feature: Added rakuten.miniapp.device.FILE_DOWNLOAD custom permission

Sample app

  • Feature: Added Dynamic deeplink support in the sample app.
  • Feature: Sample app changes to show support for download files via Mini app.

3.7.0 (2021-10-08)

SDK

  • Feature: Store Manifest as a json file
  • Feature: A secure check is performed on manifest permissions before launching the Mini App
  • Feature: A new subspec MiniApp/Signature is now available. If the dependency is added to the host, the MiniApp zip file signature is now checked to prevent file corruption or man in the middle attack
  • Feature: A RMAForceSignatureCheck boolean setting can be set in ’.plist’ file. It is considered false by default and is only used by MiniApp/Signature
  • Feature: Added support for App Store URL schemes
  • Feature: Added new public interface getMiniAppPreviewInfo to get Mini app info using preview token
  • Feature: Added SSL pinning check for API calls
  • Feature: Added getHostEnvironmentInfo(completionHandler:) interface to return MAHostEnvironmentInfo details to miniapp

Sample app

  • Feature: First time permissions screen now displays requested scopes
  • Feature: ATS deactivated to match production needs
  • Feature: Added support for previewing mini app using QR Code

3.5.0 (2021-08-05)

SDK

  • Feature: Mini App SDK now supports an optional banner text in message to send to contacts received from MiniApp
  • Feature: Added Points Interface getPoints to retrieve Rakuten Points
  • Feature: Added rakuten.miniapp.user.POINTS custom permission
  • Feature: Added support for Admob v8.+ in submodule MiniApp/Admob8

Sample app

  • Feature: Display of a banner on message contact picker when required
  • Feature: Added Points to the settings screen to change getPoints response values

3.4.0 (2021-06-25)

SDK

  • Feature: Mini App SDK now supports code updates in preview mode
  • Feature: Added possibility to send analytics to multiple accounts at the same time
  • Feature: Updated MiniAppSdkConfig class to add additional parameter MAAnalyticsConfig which will be used by Host app to send analytics for multiple accounts.
  • Updated: Updated getAccessToken result with new Error type i.e MASDKAccessTokenError to support more errors
  • Fixed: Added support for form submission redirections

Sample App

  • Feature: Added QA tests settings screen containing options to test all getAccessToken error types

3.3.0 (2021-05-27)

SDK

  • Feature: Added rakuten.miniapp.user.action.SEND_MESSAGE custom permission
  • Feature: Support Email addresses (mailto:) hyperlinks from a mini app. See here.
  • Deprecated: getUniqueId() in MiniAppMessageDelegate protocol is deprecated. You should use getUniqueId(completionHandler:) instead
  • Deprecated: getContacts() in MiniAppUserInfoDelegate protocol is deprecated. You should use getContacts(completionHandler:) instead
  • Deprecated: localize(bundle:_:params:) in MASDKLocale class is deprecated. You should use localize(bundle:_:) instead
  • Fixed: Long messages were truncated in sample app

Sample App

  • Feature: Custom contact name and email can be added now from the settings

3.2.0 (2021-04-22)

SDK

  • Feature: Added chat messages capabilities
  • Feature: Standardized texts localization

Sample App

  • Feature: Added chat messages screens with contact picker
  • Fixed: First launch screen metadata text was hidden

3.1.0 (2021-04-02)

SDK

  • Feature: Added rakuten.miniapp.user.ACCESS_TOKEN custom permission
  • Feature: Added rakuten.miniapp.user.ACCESS_TOKEN audiences and scopes

3.0.0 (2021-03-19)

SDK

  • Core: Incremented minimum support version for iOS from 11.0 to 13.0
  • Removed: Removed all deprecated and variables methods from v2:
    • MiniApp :
    • list(completionHandler:) now takes a (Result<[MiniAppInfo], MASDKError>) -> Void in place of a (Result<[MiniAppInfo], Error>) -> Void
    • info(miniAppId:completionHandler:) now takes a (Result<MiniAppInfo, MASDKError>) -> Void in place of a (Result<MiniAppInfo, Error>) -> Void
    • create(appId:completionHandler:) now takes a (Result<MiniAppDisplayProtocol, MASDKError>) -> Void in place of a (Result<MiniAppDisplayProtocol, Error>) -> Void
    • MiniAppSdkConfig:
    • testMode has been removed. Use previewMode instead
    • appId has been removed. Use projectId
    • MiniAppPermissionType has been renamed MiniAppDevicePermissionType
    • MiniAppDisplayProtocol has been renamed MiniAppDisplayDelegate
    • MiniAppMessageDelegate:
    • MiniAppMessageProtocol has ben renamed MiniAppMessageDelegate
    • requestPermission(permissionType:completionHandler:) has been removed. Use requestDevicePermission(permissionType:completionHandler:)
    • requestCustomPermissions(permissions:completionHandler:) has been removed. Use requestCustomPermissions(permissions:miniAppTitle:completionHandler:)
    • MiniAppUserInfoDelegate:
    • getUserName() has been removed. Use getUserName(completionHandler:)
    • getProfilePhoto() has been removed. Use getProfilePhoto(completionHandler:)
  • Feature: Made MiniApp SDK a static framework
  • Feature: Added ads for Mini Apps host
  • Feature: Added Google mobile ads integration in a MiniApps/Admob pod subspec
  • Feature: Added new interface getMiniAppManifest(miniAppId:miniAppVersion:) to retrieve the meta-data of a MiniApp
  • Feature: Added new interface getDownloadedManifest(miniAppId:) to retrieve the cached meta-data of a MiniApp
  • Removed: RSDKUtils dependency removed

Sample App

  • Feature: Added implementation to retrieve meta-data and show first-time launch screen to user before downloading any mini-app

2.8.0 (2021-02-01)

SDK

  • Feature Added analytics for Mini App usage tracking
  • Feature Updated getUserName and getProfilePhoto interfaces to be asynchronous. Old methods are deprecated
  • Feature Updated MiniApp().shared.create interface to accept another optional query string parameter.
  • Deprecated: requestPermission(permissionType:completionHandler:) in MiniAppMessageDelegate protocol is deprecated. You should use requestDevicePermission(permissionType:completionHandler:) instead
  • Fixed Geolocation was not updated after the first GPS fix

Sample App

  • Change Updated sample app to use the latest asynchronous getUserName and getProfilePhoto interfaces
  • Feature: Added a new section in Settings page to add the optional query parameter.

2.7.0 (2020-12-18)

SDK

  • Feature: Added support for requesting a contact list from a MiniApp
  • Feature: Added support to load a MiniApp from an URL
  • Feature: Added location permission to custom permissions management
  • Fixed: A specific exception is now raised when an app has no published version
  • Fixed: Location permissions glitch

Sample App

  • Fixed: Permissions toggles did not fit the screen
  • Fixed: Location permissions glitch

2.6.0 (2020-11-27)

SDK

  • Feature: Added support for RASProjectId. RASApplicationIdentifier is deprecated now
  • Feature: Added support for Preview endpoint. Preview endpoint becomes the new default endpoint

Sample App

  • Feature: Added implementation for Preview mode
  • Fixed: iOS 11 search field visual glitches
  • Fixed: Support for dark UI
  • Fixed: Default settings were displayed instead of the saved one

2.5.0 (2020-11-13)

Note: The 2.4.0 version was skipped to keep version alignment with the Android SDK.

SDK

  • Feature: Added support for Orientation lock, that enables the mini app to lock portrait or landscape orientation for the mini-app. Please check here
  • Feature: Added support to retrieve Access token and expiry date
  • Feature: Added default implementation in SDK for requestCustomPermissions(permissions:miniAppTitle:completionHandler:) Please check here
  • Deprecated: requestCustomPermissions(permissions:completionHandler:) in MiniAppCallbackProtocol protocol is deprecated. You should use requestCustomPermissions(permissions:miniAppTitle:completionHandler:) instead

Sample App

  • Feature: Added implementation for orientation lock
  • Feature: Added implementation to retrieve Access token details

2.3.0 (2020-10-22)

SDK

  • Feature: Added separate public MiniAppUserInfoDelegate to communicate with the host app to getUserName and getProfilePhoto. Interfaces will be called only if user has agreed to the respective custom permission. i.e rakuten.miniapp.user.USER_NAME for getUserName and rakuten.miniapp.user.PROFILE_PHOTO for getProfilePhoto.
  • Feature: Added support for Javascript bridge interface for User Info detail retrieval from Mini app. getUserName() and getProfilePhoto().
  • Feature: Added a default sharing controller in the SDK for MiniAppMessageDelegate.shareContent. This means you are no longer required to implement this method and can instead choose to use the default functionality provided by the SDK if you wish.
  • Feature: Added support of playsinline and autoplay instruction of video html tag.
  • Fixed: Links in the external webview that targeted _blank were not functioning. This has been updated so that these links will open in the same webview.
  • Fixed: tel: links were not working in the external webview.
  • Deprecated: MiniAppCallbackProtocol has been deprecated and replaced with MiniAppCallbackDelegate. MiniAppCallbackProtocol will continue to function as a typealias for MiniAppCallbackDelegate, however it will be removed in the next major version.

Sample App

  • Feature: Added sample implementation for Retrieving Username & Profile photo from Mini app
  • Feature: Added search field for mini app list.

2.2.0 (2020-10-02)

SDK

  • Feature: Added public interface to set and get the Custom permissions that are cached by the iOS SDK. See here
  • Feature: Added support in Javascript bridge for requesting Custom permission. requestCustomPermissions(permissionType)
  • Feature: Added requestCustomPermissions function to MiniAppMessageProtocol. This function requests the host app to implement and return the list of Custom permissions that User responds with allow/deny option.See here
  • Feature: Added support for Javascript bridge interface for sharing message string from Mini app. shareInfo(info)
  • Feature: Added shareContent(info:completionHandler:) function to MiniAppMessageProtocol. Host app can make use of this function to display the Sharing feature/Controller See here
  • Feature: Added ability to load external link outside of Mini App view with included SFSafariViewController or by providing delegate, with ability to provide a result URL to Mini App with a closure. See here
  • Feature: Added listDownloadedWithCustomPermissions() public interface that enables the host app to retrieve the list of downloaded mini-apps and their respective custom permissions. See here

Sample App

  • Feature: Added example for showing list of Custom permissions (on request from Mini app) and response back to Mini app.
  • Feature: Added sample implementation for Sharing the message from Mini app
  • Feature: Added sample app implementation to revoke/manage the custom permissions for the list of downloaded mini apps

2.1.0 (2020-09-03)

SDK

  • Feature: Support telephone (tel:) hyperlinks from a mini app. See here.

Sample App:

  • Feature: User name, profile photo, and contact list can be configured in the settings screen.
  • Fix: Location permission callback was not triggered after user accepted/denied the permission.

2.0.0 (2020-08-07)

SDK

  • Feature: Added public interface to create a mini app using mini app id MiniApp#create(appId:completionHandler:messageInterface)
  • Feature: Mini App is now downloaded as a ZIP archive and extracted. This should improve the initial launch time on a Mini App with many files.
  • Feature: Add support for navigator.geolocation.getCurrentPosition from JavaScript. Note that the other geolocation APIs (gelocation.watchPosition and geolocation.clearWatch) are currently not supported.
  • Feature: Enable localizable strings to be overriden by the Host App. This currently applies only to dialog button text.
  • Fixed: Prevent cache poisoning vulnerability by verifying cached Mini App files using a SHA512 hash.
  • Deprecated: MiniApp#create(appInfo:completionHandler:messageInterface). Your App should instead use MiniApp#create(appId:completionHandler:messageInterface).
  • Removed: MiniApp#create(appInfo:completionHandler:). Your App should instead use MiniApp#create(appId:completionHandler:messageInterface).
  • Removed: Runtime config option for the User Agent string. This can now be set only by using the RMAHostAppUserAgentInfo setting in your ‘.plist’ file.

Sample App

  • No changes

1.2.0 (2020-07-21)

SDK

  • Feature: Possibility to use back and forward navigation inside MiniApp with SDK default UI or custom client provided UI - See here
  • Feature: Ability to add a host app information string (RMAHostAppUserAgentInfo) that will get appended in the User agent. - See here
  • Feature: Added support for window.alert, window.confirm and window.prompt JS dialogs in the mini app display
  • Bugfix: Fixed support for display of SVG file format in a mini app

Sample App

  • Feature: Added example of custom view to navigate backward inside MiniApp - See here
  • Added build information in App’s setting screen
  • Bugfix: First time settings success dialog dismissed before tapping OK
  • Bugfix: "Display MiniApp” button was not visible when scrolling in the Mini Apps list

1.1.1 (2020-06-11)

SDK

  • no changes

Sample App

  • Bugfix: First time settings success dialog dismissed before tapping OK
  • Bugfix: “Display MiniApp” button was not visible when scrolling in the list Mini Apps

1.1.0 (2020-06-01)

  • Added JavaScript bridge for passing data between Mini App and Host App. Your App now must implement MiniAppMessageProtocol in your view controller and provide the implementation when calling MiniApp#create. - See here
  • Deprecated MiniApp#create(appInfo:completionHandler:). Your App should instead use MiniApp#create(appInfo:completionHandler:messageInterface).
  • Added getUniqueId function to MiniAppMessageProtocol. This function should provide a unique identifier (unique to the user and device) to Mini Apps.

1.0.0 (2020-04-27)

  • Initial release