When developing a mobile app you often want to use the capabilities of the mobile device, such as the GPS or notifications. You can achieve this in OutSystems using plugins. A plugin is a module that acts as a wrapper for an Apache Cordova plugin and enables you to use native mobile features.
You can find ready-to-use plugins in Forge, which contains both officially supported plugins and plugins created by the OutSystems Community. If you want to create your own plugins for use in mobile apps, do it by wrapping an Apache Cordova plugin into a module.
Using a Mobile Plugin
Install the plugin in the environment as any other component. Use the client actions of the plugin module to call the native capabilities of the device within your application. The plugin must support the mobile platforms (iOS, Android) for which you are creating an app or the app generation will fail.
Each time you add, remove, or modify the plugin in an app, OutSystems rebuilds the native shell which you then have to distribute to the end-users for installation.
You must include the plugin license in your app to respect the license agreements of that plugin. Usually, these license agreements are placed in the About page of the app that uses them.
What Are the Supported Plugins Provided by OutSystems
This is the list of officially supported mobile plugins. Most of these plugins are included in the OutSystems Now app for an out-of-the-box testing.
|Camera||Enable your application to access the camera capabilities of the device.|
|Ciphered Local Storage (not included in OutSystems Now)||Keep your mobile application's sensitive data safe using a ciphered Local Storage database.|
|Card IO||Automatically get the details of a credit card just by taking a picture.|
|OneSignal Notifications (not included in OutSystems Now)||Push Notifications using OneSignal, with deep-linking and actions.|
|Pushwoosh Notifications (not included in OutSystems Now)||Push Notifications using Pushwoosh, with deep-linking and actions.|
|SSL Pinning (not included in OutSystems Now)||Provide an extra layer of security to HTTPS communications by adding a verification of the server certificate against hashes of public keys.|
|Local Notifications||Send app notifications to the device when the application isn't running in the foreground.|
|QR/Barcode scanner||Scan barcodes and QR codes.|
|Location||Access the GPS capabilities of the user's device. For example the latitude, longitude and the altitude of the user's device.|
|Contacts||Access the contacts of your device.|
|InApp Browser||Open external URLs directly in your application.|
|Touch ID||Use authentication with Touch ID in your application.|
|Calendar||Access the calendar of your device.|
|Key Store||Store small amounts of sensitive information on your device. The keystore secures data by encrypting the data before storing it, and the platform itself carefully controls access to stored items.|
Mobile apps generated by OutSystems have a native shell with the following plugins which OutSystems uses internally. You may see the names of these plugins in the native mobile shell logs.
|OS Cordova Loader||Loads the Cordova engine on your app.|
|OS Security||Provides the required APIs for the security layer.|
|OS Manifest||Provides a parser for the app manifest.|
|OS Pre-Bundle||Handles the content of pre-bundled resources on your app.|
|OS Cache||Allows your application to run offline or with bad network conditions.|
|OS Deeplinks||Allows opening hyperlinks to specific screens of your app.|
|OS DB Upgrader||Manages the local storage of your app.|
|NetworkStatus||Allows your application to know when the device is online, offline and the type of network available (Wifi, 3G, 4G...).|
|Mobile AppFeedback||Enables the user to invoke App Feedback for submitting feedback about the app. (Only present in the native shell if the App Feedback feature is enabled in the mobile app.)|
Articles in this Section
- Using Cordova Plugins
- Create your own mobile plugin by wrapping an Apache Cordova plugin into an OutSystems module. Reference the plugin from the npm registry or git repository, or write it from zero.