BlackBerry Dynamics SDK for React Native version 10.1 Skip Navigation

BlackBerry Dynamics SDK for React Native
version 10.1

The
BlackBerry Dynamics SDK for React Native
is open sourced and available on
GitHub
, along with developer documentation and sample apps, at https://github.com/blackberry/BlackBerry-Dynamics-React-Native-SDK.
New in this release
Feature
Description
Supported versions of
React Native
The following version changes have been made in this release of
BlackBerry Dynamics SDK for React Native
:
  • Version 0.68.x is now supported.
  • Version 0.67.x is now supported.
  • Version 0.63.x has been removed.
  • Version 0.64.x has been deprecated and will be removed in a future release.
  • Version 0.65.x has been deprecated and will be removed in a future release.
  • Sample apps have been upgraded to version 0.66.4 and include steps on upgrading to version 0.67 or 0.68.
Support for local
BlackBerry Dynamics SDK for iOS
integration
You can now integrate a locally downloaded
BlackBerry Dynamics SDK for iOS
into your
BlackBerry Dynamics
React Native
app. To use a locally downloaded version of the library, run the following command:
$ yarn set-dynamics-podspec --path "/Users/<user>/Downloads/gdsdk-release-dylib-X.X.X.X/BlackBerry_Dynamics_SDK_for_iOS_vX.X.X.X_dylib" $ cd ios && pod install && cd ..
Implemented modules and sample apps
The following module has been implemented in this release of
BlackBerry Dynamics SDK for React Native
:
The following Sample app has been implemented in this release of
BlackBerry Dynamics SDK for React Native
:
Support
Feature
Description
Development requirements
  • macOS
    X
  • Windows 10
    (
    Android
    only)
React Native
supported versions
  • 0.68.x (0.68.2 is the latest supported version)
  • 0.67.x
  • 0.66.x
React Native
0.68.x requires Node.js version 14.x. and
Java
version 11.x.
BlackBerry Dynamics SDK
supported versions
Features
Feature
Description
Integration with
BlackBerry Dynamics
Integration of the
BlackBerry Dynamics SDK
for
iOS
and
Android
into the
React Native
application is supported by the addition of the BlackBerry-Dynamics-for-React-Native-Base module. You can also integrate a locally downloaded version of
BlackBerry Dynamics SDK for iOS
into your
BlackBerry Dynamics
React Native
app.
Secure connectivity
  • XMLHttpRequest and fetch are secured in scope of the BlackBerry-Dynamics-for-React-Native-Networking module.
  • <WebView /> is secured in scope of the BlackBerry-Dynamics-for-React-Native-WebView UI component.
Secure storage
  • AsyncStorage is secured in the BlackBerry-Dynamics-for-React-Native-Async-Storage module.
  • SQLite is secured in the BlackBerry-Dynamics-for-React-Native-SQLite-Storage module.
Data leakage prevention (DLP)
No code work is required to support DLP for
iOS
and
Android
. Note the following:
  • On
    iOS
    , the <Text /> component, <TextInput /> component, and Clipboard API are secured by integrating
    BlackBerry Dynamics
    .
  • On
    Android
    , the following items are required:
    • The <Text /> component is secured in scope of the BlackBerry-Dynamics-for-React-Native-Text UI component.
    • The <TextInput /> component is secured in scope of the BlackBerry-Dynamics-for-React-Native-TextInput UI component.
    • The BlackBerry-Dynamics-for-React-Native-Clipboard module secures the Clipboard API on Android.
Inter-Container Communication (ICC)
ICC (also known as AppKinetics) provides service discovery, service consumption, and service providing capabilities for
BlackBerry Dynamics
React Native
apps and allows secure communication with other
BlackBerry Dynamics
apps. To implement some ICC capabilities in
BlackBerry Dynamics
React Native
apps, use the BlackBerry-Dynamics-for-React-Native-AppKinetics module.
Support for Yarn package manager
  • To add a
    BlackBerry Dynamics
    React Native
    module, run following command:
    $ yarn add
    <path_to_module>
  • To remove a
    BlackBerry Dynamics
    React Native
    module, run following command:
    $ yarn remove
    <path_to_module>
For more information, see the readme file for each module.
Importing a prepopulated SQLite database
You can use any of the methods detailed here to import a prepopulated SQLite database: Importing a prepopulated database. The third method is supported for
Android
only. For more information, see the readme file at https://github.com/blackberry/BlackBerry-Dynamics-React-Native-SDK.
Package contents
Feature
Description
Modules
  • BlackBerry-Dynamics-for-React-Native-Base automatically integrates the
    BlackBerry Dynamics SDK
    for
    iOS
    and
    Android
    into the React Native application.
  • BlackBerry-Dynamics-for-React-Native-Networking secures XMLHttpRequest and fetch APIs on
    Android
    . For more information, see React Native: Networking.
  • BlackBerry-Dynamics-for-React-Native-SQLite-Storage secures SQLite database usage, based on the react-native-sqlite-storage third-party module.
  • BlackBerry-Dynamics-for-React-Native-Async-Storage secures built-in AsyncStorage.
  • BlackBerry-Dynamics-for-React-Native-Clipboard secures the built-in Clipboard API.
  • BlackBerry-Dynamics-for-React-Native-AppKinetics provides the ability to use
    BlackBerry Dynamics
    app-based services within a
    BlackBerry Dynamics
    React Native app to securely communicate with other
    BlackBerry Dynamics
    apps in a process called Inter-Container Communication (ICC) or AppKinetics; also provides service discovery, service consumption, and service providing capabilities.
  • BlackBerry-Dynamics-for-React-Native-FileSystem secures the API for the react-native-fs module; the JavaScript API of this module is the same, but files and directories are now stored and managed within the
    BlackBerry Dynamics
    secure container.
  • BlackBerry-Dynamics-for-React-Native-Launcher allows you to integrate the
    BlackBerry Dynamics Launcher
    with your
    BlackBerry Dynamics
    React Native
    apps.
  • BlackBerry-Dynamics-for-React-Native-Application allows you to access information that is globally available to any
    BlackBerry Dynamics
    app.
UI components
  • BlackBerry-Dynamics-for-React-Native-Text enables data leakage protection (DLP) within UI components on
    Android
    .
  • BlackBerry-Dynamics-for-React-Native-TextInput enables DLP within UI components on
    Android
    .
  • BlackBerry-Dynamics-for-React-Native-WebView secures the built-in <WebView /> UI component to securely load public and enterprise resources within a WebView.
Sample apps
  • BasicNetworking provides examples of using fetch and XMLHttpRequest in different scenarios. This app covers different HTTP request types (GET, POST, PUT, DELETE, and so on), authentication types (basic auth, Digest, NTLM), and includes the ability to send different data types to the server and receive responses for different data types.
  • ClipboardTestApp demonstrates how to use the Clipboard API for data leakage prevention (DLP). It is possible to change the DLP policy on
    UEM
    and see how it affects the clipboard within the app. If DLP is enabled, clipboard data cannot be copied from a
    BlackBerry Dynamics
    app to a non-
    BlackBerry Dynamics
    app, and vice-versa.
  • DLP demonstrates how to use the <Text /> and <TextInput /> UI components together with the
    UEM
    DLP policy option. If DLP is on, it is not possible to perform cut-copy-paste operations to transfer data from
    BlackBerry Dynamics
    to non-
    BlackBerry Dynamics
    applications, and vice-versa.
  • SQLite demonstrates how to use a secure SQLite DB instance in a React Native app.
  • UnitTest runs Jasmine unit tests for fetch, XMLHttpRequest, Clipboard, AsyncStorage, SQLite, and AppKinetics in a React Native application.
  • WebViewBrowser demonstrates how to use the <WebView /> component in a React Native application.
  • FileSystem demonstrates how to use a secure FileSystem instance in a
    React Native
    app, how to manage files and directories, and how to upload and download files.
  • WebSocketClient and WebSocketServer demonstrate how to establish a connection to a WebSocket server using "ws://" or "wss://" protocols, how to send or receive text or binary data over a WebSocket connection, and how to close a WebSocket connection.
  • AppKinetics demonstrates how to use AppKinetics, or secure Inter-Container Communication (ICC), including sending and receiving files using ICC and creating secure email with
    BlackBerry Work
    or the native email client (if permitted).
  • Policy demonstrates how to retrieve a collection of app-specific configuration and policy settings. The retrieval of these settings happens during the method call or whenever settings are changed.

Known issues

  • On an
    Android
    11 device, if the targetSdkVersion is set to 30, a
    BlackBerry Dynamics
    React Native
    app stops responding with an "Exception in native call" error. This is due to a known
    React Native
    issue and is not specific to
    BlackBerry Dynamics
    . For more information, see ReactNative app crashes on Android 11 device with targetSdkVersion 30.
  • When an app is in dark mode, text in textinput fields become white and cannot be read on a white background. This is a known issue with the
    React Native
    platform. For more information, see https://github.com/facebook/react-native/issues/26299 and https://github.com/xgfe/react-native-datepicker/issues/365. (GD-47807)
    Workaround
    : Add the following lines to your plist file to prevent system ui-elements from changing color when in dark mode:
    *<key>UIUserInterfaceStyle</key> <string>Light</string>*
  • Flipper is disabled by default on
    iOS
    . Flipper cannot be used with
    BlackBerry Dynamics SDK for React Native
    on
    iOS
    in debug configuration because it disables some
    BlackBerry Dynamics
    secure networking functionality.
    If your
    BlackBerry Dynamics SDK for React Native
    app on
    iOS
    does not use the secure connectivity feature (
    BlackBerry-Dynamics-for-React-Native-Networking
    module), you can enable Flipper by uncommenting the
    use_flipper!()
    line in Podfile.