SDK
- Fix: Fixed
getUsername
unicode issue
SDK
- Fix: Updated JS Bridge after fixing linting issues.
SDK
- Fix: Fix character escaping issue in Universal bridge (
sendJsonToMiniApp
)
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.
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
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.
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.
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
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: "<Your string content / json content>")
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
SDK
- Fix: Secure storage feature bug fixes
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.
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.
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)
- Fix: Added weak references fix for clearing the RealMiniAppView object from memory.
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.
SDK
- Fix: Added weak references fix for clearing the RealMiniAppView object from memory.
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.
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
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
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
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
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
SDK
- Feature: Added
rakuten.miniapp.user.ACCESS_TOKEN
custom permission - Feature: Added
rakuten.miniapp.user.ACCESS_TOKEN
audiences and scopes
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
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.
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
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
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
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.
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
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.
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
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
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
- 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.
- Initial release