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: ) in
MiniApp` class. - Deprecated:
getUniqueId(completionHandler:)
inMiniAppMessageDelegate
protocol is deprecated. You should usegetMessagingUniqueId(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:)
inMiniAppMessageDelegate
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 theMAAnalyticsInfo
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)
inUniversalBridgeDelegate
protocol. Now MiniApps can share the information to host app as structured object of typeUniversalBridgeInfoParameters
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
toMiniAppManageDelegate
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 inMAContact
to support multiple emails of a specific contact. - Feature: Added a new optional interface
func closeMiniApp(withConfirmation: , completionHandler:)
inMiniAppMessageDelegate
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 byMiniAppMessageDelegate
, further added public interfacesendJsonToHostApp(info:, completionHandler:) -> Void)
inUniversalBridgeDelegate
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 replaceMiniApp.shared().create()
. From now oncreate
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
‘sloadAsync
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)")
}
}
- Feature: Added
MiniAppParameters
and a new configMiniAppConfig
that is used to initializeMiniAppView
Show code
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 toUIViewRepresentable
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
inMiniAppMessageDelegate
for future support of MAUID v2 and another interfacegetMauid
inMiniAppMessageDelegate
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 bystorageMaxSizeInBytes
to set the maximum available space in bytes for secure storage. - Feature: Added
miniAppShouldClose
interface inMiniAppNavigationBarDelegate
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 sends429
status code. This could clear specific cached mini-app if429
is received
Sample app
- Enhancement: Added
GET MESSAGING UNIQUE ID
andGET 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
andGET 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 theMiniApp.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:)
inMiniAppMessageDelegate
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
andpromotionalText
in MiniAppInfo model. - Update: Updated
getHostEnvironmentInfo(completionHandler:)
interface to returnMAHostEnvironmentInfo
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 byMiniApp/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 returnMAHostEnvironmentInfo
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 parameterMAAnalyticsConfig
which will be used by Host app to send analytics for multiple accounts. - Updated: Updated
getAccessToken
result with new Error type i.eMASDKAccessTokenError
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()
inMiniAppMessageDelegate
protocol is deprecated. You should usegetUniqueId(completionHandler:)
instead - Deprecated:
getContacts()
inMiniAppUserInfoDelegate
protocol is deprecated. You should usegetContacts(completionHandler:)
instead - Deprecated:
localize(bundle:_:params:)
inMASDKLocale
class is deprecated. You should uselocalize(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. UsepreviewMode
insteadappId
has been removed. UseprojectId
MiniAppPermissionType
has been renamedMiniAppDevicePermissionType
MiniAppDisplayProtocol
has been renamedMiniAppDisplayDelegate
MiniAppMessageDelegate
:MiniAppMessageProtocol
has ben renamedMiniAppMessageDelegate
requestPermission(permissionType:completionHandler:)
has been removed. UserequestDevicePermission(permissionType:completionHandler:)
requestCustomPermissions(permissions:completionHandler:)
has been removed. UserequestCustomPermissions(permissions:miniAppTitle:completionHandler:)
MiniAppUserInfoDelegate
:getUserName()
has been removed. UsegetUserName(completionHandler:)
getProfilePhoto()
has been removed. UsegetProfilePhoto(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
andgetProfilePhoto
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:)
inMiniAppMessageDelegate
protocol is deprecated. You should userequestDevicePermission(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
andgetProfilePhoto
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
orlandscape
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:)
inMiniAppCallbackProtocol
protocol is deprecated. You should userequestCustomPermissions(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.erakuten.miniapp.user.USER_NAME
for getUserName andrakuten.miniapp.user.PROFILE_PHOTO
for getProfilePhoto. - Feature: Added support for Javascript bridge interface for User Info detail retrieval from Mini app.
getUserName()
andgetProfilePhoto()
. - 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
andautoplay
instruction ofvideo
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 withMiniAppCallbackDelegate
.MiniAppCallbackProtocol
will continue to function as atypealias
forMiniAppCallbackDelegate
, 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 othergeolocation
APIs (gelocation.watchPosition
andgeolocation.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 useMiniApp#create(appId:completionHandler:messageInterface)
. - Removed:
MiniApp#create(appInfo:completionHandler:)
. Your App should instead useMiniApp#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
andwindow.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 callingMiniApp#create
. - See here - Deprecated
MiniApp#create(appInfo:completionHandler:)
. Your App should instead useMiniApp#create(appInfo:completionHandler:messageInterface)
. - Added
getUniqueId
function toMiniAppMessageProtocol
. This function should provide a unique identifier (unique to the user and device) to Mini Apps.
1.0.0 (2020-04-27)
- Initial release