BlackBerry Dynamics SDK for Cordova-4.0-Development...

34
Development Guide BlackBerry Dynamics SDK for Cordova Version 4.0

Transcript of BlackBerry Dynamics SDK for Cordova-4.0-Development...

Page 1: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Development GuideBlackBerry Dynamics SDK for Cordova

Version 4.0

Page 2: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Published: 2018-05-03SWD-20180503132440007

Page 3: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

ContentsAbout this guide............................................................................................................... 5

BlackBerry Dynamics background.................................................................................... 6BlackBerry Dynamics API reference..................................................................................................................................6

US FIPS 140-2 compliance............................................................................................................................................... 6

Easy Activation................................................................................................................................................................. 7

Securing cut-copy-paste on devices (Data Leakage Prevention, or DLP).............................................................................7

Shared Services Framework.............................................................................................................................................. 8

Support for fingerprint authentication................................................................................................................................8

Support for client certificates............................................................................................................................................ 8

Support for "No Password" security policy.........................................................................................................................9

Support for AngularJS and Ionic...................................................................................................................................... 10

Bypassing the App Lock screen.......................................................................................................................................10

Supported languages...................................................................................................................................................... 10

Requirements.................................................................................................................12BlackBerry Dynamics software versions.......................................................................................................................... 12

Compatibility with earlier releases............................................................................................................................ 12

Unsupported BlackBerry Dynamics features............................................................................................................ 12

Software requirements....................................................................................................................................................13

Recommended development environment: macOS, not Windows 10........................................................................14

Character encoding for build files: UTF-8................................................................................................................. 14

BlackBerry Dynamics entitlement ID and version.............................................................................................................14

Distinction from and use with native language identifiers.......................................................................................... 16

Including BlackBerry Dynamics entitlement version metadata for the Shared Service Framework............................. 17

Setting preferences in config.xml for BlackBerry Dynamics...................................................................................... 18

Steps to get started with the BlackBerry Dynamics SDK for Cordova................................ 20Install the BlackBerry Dynamics SDK for Cordova ........................................................................................................... 20

Install BlackBerry Dynamics SDK for Android or BlackBerry Dynamics SDK for iOS................................................... 21

Directory structure and available plug-ins................................................................................................................ 21

Using plug-ins to enable your apps..................................................................................23Installing the Configure plug-in........................................................................................................................................23

Page 4: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

The Base plug-in.............................................................................................................................................................24

Usage declaration for Face ID.................................................................................................................................. 25

Check the version of installed plug-ins.............................................................................................................................25

Security of Cordova localStorage..................................................................................................................................... 25

Sample apps.................................................................................................................. 27

Testing and troubleshooting............................................................................................ 28Automated test support library for iOS.............................................................................................................................28

Logging and diagnostics..................................................................................................................................................28

Log message categories...........................................................................................................................................28

Configure detailed logging for the Xcode console......................................................................................................29

Configure selective logging for the Xcode console.....................................................................................................29

Configure logging in Good Control............................................................................................................................ 29

GDLogManager class for log uploading.....................................................................................................................30

Readying your app for deployment: server setup............................................................. 31

Legal notice....................................................................................................................32

Page 5: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

About this guide

This guide is an introduction to the BlackBerry Dynamics software development kit (SDK) for Cordova. The guide focuses on how to install the BlackBerry Dynamics SDK for Cordova, how to use the provided plugins, and introduces the sample apps that are packaged with the SDK.

This guide is intended for software developers who already have an understanding of developing software with Cordova. For more information about Cordova, visit cordova.apache.org.

This guide is not a tutorial on programming with Cordova. It assumes that you have working knowledge of the language and concepts. The guide also assumes that you have installed the supported version of Cordova. For information about how to install, see the instructions from Apache Project at https://cordova.apache.org/docs/en/latest/ or the Node.js site at https://www.npmjs.com/package/cordova

1

About this guide

5

Page 6: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

BlackBerry Dynamics background

The following sections provide some background information that can help you understand the features of the BlackBerry Dynamics SDK.

The way that these features are implemented in your environment will depend on how your administrator has configured your organization's servers, your network, and other infrastructure.

BlackBerry Dynamics API referenceThe BlackBerry Dynamics SDK API reference describes the available interfaces, classes, methods, and much more.

You can access the BlackBerry Dynamics SDK for Cordova API reference at https://developers.blackberry.com/us/en/resources/api-reference.html.

You can access the Android API reference:

• Online at https://developers.blackberry.com/us/en/resources/api-reference.html.

• In the installed directories for the BlackBerry Dynamics SDK for Android.

You can access the iOS API reference:

• Online at https://developers.blackberry.com/us/en/resources/api-reference.html.

• In the installed directories for the BlackBerry Dynamics SDK for iOS. In Xcode, the BlackBerry Dynamics SDK Reference can be viewed from the Organizer window in the Documentation section in Xcode.

US FIPS 140-2 complianceBlackBerry Dynamics apps must be built to be compliant with U.S. Federal Information Processing Standards (FIPS) 140-2. The BlackBerry Dynamics SDK distribution contains FIPS canisters and tools and by default enforces FIPS compliance.

On Android, FIPS compliance is automatic; no special build steps are required.

There are two sides to enabling FIPS: the app itself and the policy server, either Good Control or BlackBerry UEM.

The app

When an app starts, it must start in FIPS-compliant mode. The BlackBerry Dynamics SDK determines whether a service is running in FIPS mode when the app communicates with the server to receive policies. All apps must be written for FIPS compliance.

2

BlackBerry Dynamics background

6

Page 7: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

The policy server

For pointers to more details on FIPS policies, see the documentation for servers described in Readying your app for deployment: server setup.

What FIPS compliance enforces

Enabling FIPS compliance enforces the following constraints:

• MD4 and MD5 are prohibited by FIPS, which means that access to NTLM- or NTLM2-protected web pages and files is blocked.

• Wrapped apps are blocked.

• In secure socket key exchanges with ephemeral keys, with servers that are not configured to use Diffie-Hellman keys of sufficient length, BlackBerry Dynamics retries with static RSA cipher suites.

Easy ActivationThe Easy Activation feature simplifies the provisioning process by allowing a BlackBerry Dynamics app to hand off activation to an app that is already installed on the device and can act as the activation delegate. The user has to retrieve and manually enter an access key only the first time they install a BlackBerry Dynamics app.

For more information about enabling Easy Activation, see the Easy Activation Feature Overview.

Securing cut-copy-paste on devices (Data Leakage Prevention, or DLP)You can use the BlackBerry Dynamics SDK to protect certain data copied and pasted between apps on your users' devices.

For iOS, you don't need to do any additional programming to support secure cut and paste.

Server administrators must enable the Data Leakage Prevention policies in the management console.

To enable sharing among a group of apps, the apps must be provisioned from the same BlackBerry Control service for each user.

If the Data Leakage Prevention settings are enabled in your environment, you can work around them when you need to debug your app. For more information, see the BlackBerry Dynamics SDK API Reference.

BlackBerry Dynamics background

7

Page 8: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Shared Services FrameworkBlackBerry Dynamics-enabled apps can communicate with each other using the Shared Services Framework. There are two kinds of shared services:

• Server-side services

• Client-side services

The BlackBerry Dynamics SDK contains sample apps that show how these services work.

For a conceptual background, see BlackBerry Dynamics Services Framework.

Support for fingerprint authenticationSupport for fingerprint recognition is a supplement to standard BlackBerry Dynamics secure user authentication, not a replacement for it. BlackBerry Dynamics includes the following policies related to fingerprint authentication. These settings are configured using policies in the management console:

• Allow or disallow fingerprint authentication for BlackBerry Dynamics-based apps in general.

• If fingerprint authentication is allowed, you can also allow or disallow it for BlackBerry Dynamics apps immediately after app coldstart. If you do not allow it after app coldstart, the user must enter the password for the app.

• Require the end user to enter a password after a specified interval.

Note: For app developers, no additional programming work is necessary for fingerprint authentication. If the app supports Samsung Pass, some linking directives are required. See Info: Add Samsung Pass to your BlackBerry Dynamics app.

For more information, see BlackBerry Dynamics and Fingerprint Authentication.

Support for client certificatesBlackBerry Dynamics supports many popular uses of client-side Public Key Infrastructure (PKI) certificates to secure apps and communications:

• General requirements for working with PKI certs

• Description of client certificate sharing among BlackBerry Dynamics apps on a device

• Kerberos PKINIT: client certificates in the Kerberos authentication model. (This is not Kerberos Constrained Delegation, or KCD).

BlackBerry Dynamics background

8

Page 9: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Support for "No Password" security policyThe BlackBerry Dynamics Runtime now supports the security policy for not requiring the end user to set an app password.

Security consideration

• Consider the security ramifications in your environment carefully. Enabling "no password" is only one of the design options available. Others include authentication delegation, enabling "no password" on certain devices only, device management, and more. You should consider enabling "no password" for select groups of users whose devices are under tight control via device management profiles or other controls.

• Do not enable "no password" and authentication delegation in the same policy set.

• Enabling "no password" does not permit authentication in the background, because there is no authentication.

Software prerequisites

1. Standalone Good Control 3.0.50.70 or later or BlackBerry UEM 12.7 or later

2. The "No Password" policy must be enabled and applied to the desired users or app group.

User-visible changes and behavior

With a BlackBerry Dynamics app that is protected by a security policy that requires a password, if the administrator changes the security policy to "Do not require a user password":

• The user is shown an informational screen stating that a password is no longer required for the app.

• The user is then in "No Password mode" and is never prompted for password again.

If the user is in "No Password mode" and the administrator changes the security policy to require a password:

• The user is prompted to set a password.

• The user is shown an informational screen stating that a password is now required for the app.

Optional APIs for Android for "No Password" policy

You can call the GDAndroid.getInstance().canAuthorizeAutonomously method to find out if an app is protected by the security policy to require a password.

Call GDAndroid.serviceInit( ) to start the authorization process when your app has received a GCM message or background broadcast/explicit intent.

The sample app GDInteraction illustrates the use of these methods.

For syntax and details, see the SDK programming reference.

BlackBerry Dynamics background

9

Page 10: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Optional APIs for iOS for "No Password" policy

You can query the state of the policy with [GDiOS sharedInstance].canAuthorizeAutonomously.

If your app has received an APNS message or a Background Fetch period, or has been launched in the background, you can call the [GDiOS sharedInstance].authorizeAutonomously method to start the authorization process.

The SecureStore sample app illustrates the use of these methods.

For syntax and details, see the SDK programming reference.

Support for AngularJS and IonicExcept for the limitations noted below for Android, the BlackBerry Dynamics SDK for Cordova supports all of the features of:

• AngularJS version 1, 2, 4, and 5

• Ionic version 1, 2, 3 and 4

Note the following limitations for Android only:

• Synchronous HTTP requests via XMLHttpRequest are not supported. The requests are treated as asynchronous.

• File uploads with FormData() are not supported. Use the FileTransfer plug-in (cordova-plugin-bbd-filetransfer) for file uploads and downloads. For more information about this plug-in, see Directory structure and available plug-ins.

Bypassing the App Lock screenBlackBerry Dynamics supports the ability of an app to bypass the BlackBerry Dynamics user authentication/lock screen. Some organizations want this feature, particularly in VoIP apps where the user needs to respond quickly to an incoming call.

Note: Enabling this policy weakens the security inherent to BlackBerry Dynamics.

For information about requesting this feature, the necessary programming for bypassing the lock screen, the setup of a required app policy, and other details, see Bypass Unlock: BlackBerry Dynamics app Developer Guide.

Supported languagesThe BlackBerry Dynamics SDK supports the following languages. No SDK calls are required to use a particular language; the interface selects the appropriate language based on the language setting the user has configured on their device.

• English (US)

• Chinese (Simplified)

BlackBerry Dynamics background

10

Page 11: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

• Danish

• Dutch

• French

• German

• Italian

• Japanese

• Korean

• Portuguese (Brazil)

• Portuguese (Portugal)

• Spanish

• Swedish

BlackBerry Dynamics background

11

Page 12: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Requirements

BlackBerry Dynamics software versions• BlackBerry Dynamics SDK for iOS 4.0.x

• BlackBerry Dynamics Launcher Library for iOS 2.7.x

• BlackBerry Dynamics SDK for Android 4.0.x

• BlackBerry Dynamics Launcher Library for Android 2.7.x

• BlackBerry Dynamics SDK for Cordova 4.0.x

Compatibility with earlier releasesThe latest release of the BlackBerry Dynamics SDK for Cordova is compatible with the previous two releases of the BlackBerry Dynamics SDK for Cordova, and the previous release of the BlackBerry Dynamics SDK for Android and the BlackBerry Dynamics SDK for iOS.

Note: You should always build with and test against the most recent release. The most recent release has bug fixes and new features that you should test and deploy regularly.

Unsupported BlackBerry Dynamics featuresThe following features of BlackBerry Dynamics are not supported by the BlackBerry Dynamics SDK for Cordova:

• Not supported on Android: BlackBerry Dynamics Wearable Framework

• Not supported on Android: Securing cut-copy-paste on devices (Data Leakage Prevention, or DLP)

• Not supported on iOS: BlackBerry Dynamics Launcher Library

3

Requirements

12

Page 13: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Software requirements

Android development

Item Requirement

BlackBerry Dynamics Handheld Library Minimum API level: 19

BlackBerry Dynamics Wearable Library Minimum API level: 20

Supported CPU architectures • ARMv7

• ARMv8

• x86

Android Wearable dependencies • Google Play Services 9.1.2

• Android Wear Emulator API level 22

Suggested versions of platform and tools Suggested version of Android Studio: 2.2

Recommend the following values specified in sdk/libs/handheld/gd/build.gradle. Other versions of tools will work, however, BlackBerry Dynamics library gradle files might need to be updated accordingly.

• com.android.tools.build:gradle:2.1.0

• compileSdkVersion 24

• buildToolsVersion "25.0.3"

iOS development

Item Requirement

Deployment target • iOS 10 or later

iOS SDK • 10.0 or later

Xcode • 8 or later

Supported programming langauges • Objective-C: latest versions supported by Apple

Requirements

13

Page 14: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Item Requirement

• Swift: 3.0 or later

Cordova development

Developing a BlackBerry Dynamics SDK for Cordova solution is easiest on the macOS platform. Windows 10 is not supported for development.

Item Requirement

Supported Cordova libraries • 6.x

• 7.0.0

• 7.0.1

Recommended development environment: macOS, not Windows 10Developing an app with BlackBerry Dynamics SDK for Cordova is easiest on the macOS platform.

Windows 10 is not supported for development.

Character encoding for build files: UTF-8The BlackBerry Dynamics SDK for Android needs your build files (such as settings.json) to be in UTF-8 character encoding.

Beware of inadvertently using an editor that adds non-UTF-8 characters or headers.

In general, Java does not work with UTF-8-BOM (byte order mark).

BlackBerry Dynamics entitlement ID and versionBlackBerry Dynamics apps are uniquely identified by a BlackBerry Dynamics entitlement ID (GDApplicationID) and entitlement version (GDApplicationVersion). The entitlement ID and entitlement version are used to manage end-user entitlement for your apps, as well as for publishing and service provider registration. The BlackBerry Dynamics entitlement ID was formerly known as the app ID or GD App ID.

The entitlement ID is used in the app, in the BlackBerry UEM or standalone Good Control management console for app management, and in some administrative user interfaces on the application developer portal.

For details about defining the entitlement ID and version, see Setting preferences in config.xml for BlackBerry Dynamics.

Requirements

14

Page 15: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Note: The entitlement ID and entitlement version are different from the native application ID and native application version. The native application ID is a unique identifier for the app that is used by the OS and associated platforms (for example, the package name for Android or bundle identifier for iOS). The native application version is the app version number that you must change if you want to distribute a new version of an app (see Android Studio: Version Your App). You only need to change the entitlement version if the app starts to provide a new shared service or shared service version, or if the app stops providing a shared service or shared service version. For more information about when to change the entitlement ID and entitlement version, see the BlackBerry Dynamics API reference.

Requirements for the entitlement ID and entitlement version

Requirement Description

Required for apps You must define both the entitlement ID and the entitlement version for all your BlackBerry Dynamics apps, regardless of whether you use the BlackBerry Dynamics Shared Services Framework. Developers and administrators should ensure that the value specified for the GDappVersion key in the app configuration files is the same as the value the administrator specifies in BlackBerry UEM or in standalone Good Control.

The entitlement version is independent of any native version identifier. For more information, see Distinction from and use with native language identifiers.

Represent the same app across all platforms

The same entitlement ID must be used to represent the app across all platforms. By default, access to apps varies by the type of app:

• By default, all versions of partner or ISV apps are available to all authorized users in any organization that the app has been published to.

• By default, each version of a BlackBerry Dynamics app requires that the administrator grant access in BlackBerry UEM or in standalone Good Control before users can run the app on users' devices.

Naming scheme Develop a naming scheme to meet your needs. For example:

• Entitlement ID: com.manufacturingco.gd

• Entitlement version: 1.0.0.0

• Native application version: 2.0

Entitlement ID format • The general form of an entitlement ID is <company_name>.<app_name>.

• The ID must use reverse domain name form, for example, com.company.example. Use a domain name owned by your organization.

• The ID must not begin with com.blackberry, com.good, com.rim, or net.rim.

• The ID can contain only lower-case letters, numeric digits, hyphens, and periods.

• The string must follow the <subdomain> format defined in section 2.3.1 of RFC 1035, as amended by Section 2.1 of RFC RFC 1123.

Requirements

15

Page 16: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Requirement Description

Entitlement version value • The value must use one to four segments of digits, separate by periods (x.x.x.x).

• Each segment can be up to three digits and must not use a leading zero (for example, 01.02 is not valid). A segment can use a single 0.

• The first release of an app should use the entitlement version 1.0.0.0.

Distinction from and use with native language identifiersThe Entitlement ID and Entitlement Version are BlackBerry Dynamics specific metadata and are independent of the identifiers needed by the app platforms themselves. The key point is that the values and the native language identifiers' values can be the same but they do not necessarily have to be. Listed below by platform are the equivalent native identifiers, which are where the values of Entitlement ID and version are stored.

• AndroidManifest.xml

◦ packageName◦ packageVersion

• Info.plist

◦ CFBundleIdentifier◦ CFBundleVersion

Unique native identifiers for enterprise apps

If you are developing a private app for use in your enterprise, make sure that the value you choose for the app's native identifiers (Bundle ID and others constructs used on other platforms) is unique, especially with respect to apps that are available through the public app stores.

Duplicate native identifiers can prevent the proper installation or upgrade of your own app.

For all your native identifiers, devise a naming scheme that you can be relatively certain is unique.

Mapping BlackBerry Dynamics entitlement ID to native identifiers

To take advantage of many features, such as Easy Activation, multi-authentication delegation, and the shared services framework, developers need to set up a map in the server between your defined Entitlement ID and the native identifiers on the platforms for which your app is distributed. The native platforms have no knowledge of the Entitlement ID; thus the mapping is needed for the operating systems to take over the actual function of the app.

Requirements

16

Page 17: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Native version identifiers: * wildcard allowed for blocking app

The SDK supports use of native version identifiers in keeping with the conventions described by the major vendors. These same conventions apply to the use of the * wildcard in the server to deny apps by native version.

• Platform: packageVersion• A string of the format major.minor.point with no explicit requirement to use integers, although this is implied and

followed by convention.

• More information from Google

• Platform:CFbundleVersion• A series of integers separated by ".". No explicit limit on number of words.

• More information from Apple

The * character can be used in native version identifiers, but must always be preceded by a period (.) and must be the last character in the native version string. Examples:

• Allowed: 2.3.*

• Not allowed: 2.*.3

• 2.* includes 2.*.*

Including BlackBerry Dynamics entitlement version metadata for the Shared Service FrameworkFor apps that provide a service used by other apps, which is based on the Shared Services Framework, you should include the BlackBerry Dynamics Entitlement Version number directly in the app's AndroidManifest.xml so that the SDK routines that work with services can identify the required version of the service provider. For background information, see BlackBerry Dynamics entitlement ID and entitlement version.

The AppKinetics and AppKinetics Save Edit Service sample apps include example files that illustrate the necessary entry.

In AndroidManifest.xml for an app that provides a service, the BlackBerry Dynamics entitlement version is called out in a <meta-data> tag in the <app> block, as shown in the following snippet.

Note: For backward compatibility, the name of the key is GDappVersion, not "entitlement version". The value is defined by you, as discussed in BlackBerry Dynamics entitlement ID and entitlement version.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.good.gd.example.appkinetics [...] <app [...] <meta-data android:name="GDappVersion" android:value ="your_value_here"/> </app></manifest>

Requirements

17

Page 18: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Important: In settings.json, the name/value pair required is: GDappVersion. Be sure that the values are the same in both settings.json and AndroidManifest.xml files.

Setting preferences in config.xml for BlackBerry DynamicsIn config.xml you can set certain preferences, as detailed here.

GDApplicationID and version

"GD Application ID" and "GD application version" are older terminology for what are now known as "BlackBerry Dynamics application ID" and "BlackBerry Dynamics application version". (The use of the older terminology in some programming constructs in the SDK and elsewhere remains unchanged.) Add the following lines to config.xml to define your GDApplicationID and GDApplicationVersion:

<preference name="GDApplicationID" value="Your_Custom_Application_ID" /><preference name="GDApplicationVersion" value="Your_Custom_Application_Version" />

Enterprise Simulation Mode

To enable or disable enterprise simulation mode, you can use the following preference in config.xml:

<preference name="GDEnterpriseSimulationMode" value="true" />

Valid values for the value attribute are true and false.

iOS only: Enterprise Discovery Scheme

On iOS only, you need to set a preference for the required discovery scheme. For background, see BlackBerry Dynamics entitlement ID and version.

<preference name="BBD_Enterprise_Discovery" value="true" />

Valid values for value are true and false.

iOS only: Face ID usage declaration

This preference allows you to switch off the automatic addition of the NSFaceIDUsageDescription property in the Info.plist file. As a best practice, you should only prevent the automatic addition of the usage declaration if the app uses Face ID for a purpose other than BlackBerry Dynamics integration.

<preference name="addFaceIDUsage" value="Off" />

Requirements

18

Page 19: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Example settings in config.xml

Be sure to nest these preferences in the individual <platform name="ios"/> or <platform name="android"/> sections.

<?xml version='1.0' encoding='utf-8'?><widget id="com.good.gd.example.pg.blank" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>Test Application</name> <description> A sample Apache Cordova application that responds to the deviceready event. </description> <content src="index.html" /> <plugin name="cordova-plugin-whitelist" spec="1" /> <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <preference name="GDEnterpriseSimulationMode" value="true" /> <preference name="GDApplicationID" value="com.good.gd.example.cdv.blank.new" /> <preference name="GDApplicationVersion" value="1.0.0.1" /> <preference name="BBD_Enterprise_Discovery" value="true" /> <platform name="android"> <allow-intent href="market:*" /> </platform> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform></widget>

Custom icons

You can create custom default icons for BlackBerry Dynamics apps. For more information, see the cordova guide.

Requirements

19

Page 20: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Steps to get started with the BlackBerry Dynamics SDK for Cordova

Follow the steps below to start working with the BlackBerry Dynamics SDK. You can also see Getting Started with the BlackBerry Dynamics SDK for a step-by-step walkthrough of the stages of developing a BlackBerry Dynamics app.

1. Install the BlackBerry Dynamics SDK for Cordova .

2. Familiarize yourself with the features of the BlackBerry Dynamics SDK.

• For general information, see BlackBerry Dynamics background.

• To view code samples, see Sample apps.

3. Understand the Requirements and possible constraints on your programming.

4. Become familiar with available classes and methods in the SDK programming reference.

5. Add the desired plugins for your target platforms, add your own code, and build your app. See Using plug-ins to enable your apps.

6. Test your app, and if necessary, troubleshoot it. To help you troubleshoot issues, you can set up Logging and diagnostics.

7. Deploy your app. For options, see Ready your app for deployment.

Install the BlackBerry Dynamics SDK for CordovaRecommended sequence for installing required components for the BlackBerry Dynamics SDK for Cordova: Although you have several options with respect to the developer tools and environment you can use, especially if you are an experienced and proficient Android app developer, we recommend development on macOS (not Windows) and the following sequence of installation

1. Install Android SDK.

2. Download and install the BlackBerry Dynamics SDK package.

• Extract the entire zip package to a project directory appropriate to your development environment.

• You also need to install the base SDK for your target platform. See Install BlackBerry Dynamics SDK for Android or BlackBerry Dynamics SDK for iOS.

3. Install the Android SDK/ADT Bundle (optionally, Android Studio).

4. Install Node.js. After installation the npm command is available in your terminal shell.

4

Steps to get started with the BlackBerry Dynamics SDK for Cordova

20

Page 21: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Install BlackBerry Dynamics SDK for Android or BlackBerry Dynamics SDK for iOSThe BlackBerry Dynamics SDK for Cordova requires that you install the BlackBerry Dynamics SDK for Android or BlackBerry Dynamics SDK for iOS, because Cordova relies on these.

• See the BlackBerry Dynamics SDK for Android Development Guide.

• See the BlackBerry Dynamics SDK for iOS Development Guide.

Directory structure and available plug-insThe directory structure and available plug-ins of the BlackBerry Dynamics SDK for Cordova are annotated below. For more information about using the plug-ins, see Using plug-ins to enable your apps.

BlackBerry_Dynamics_for_Cordova_<version> Documentation/ plugins/ cordova-plugin-bbd-all # Enables all plugins cordova-plugin-bbd-appkinetics # Securely communicates between apps. Includes a README.md. cordova-plugin-bbd-application # Accesses globally available to any BlackBerry Dynamics app. # Includes a specific README.md. cordova-plugin-bbd-base # Sets up baseline parameters cordova-plugin-bbd-filetransfer # Downloads/uploads files from/to a remote server # Includes a specific README.md. cordova-plugin-bbd-httprequest # Sends HTTP requests over the internet. Encapsulates HTTP response # returned from a HttpRequest's send function. # Includes a specific README.md. cordova-plugin-bbd-interappcommunication # Returns information about a service provider app # Includes a specific README.md. cordova-plugin-bbd-mailto # Provides functionality to securely send emails with attachments cordova-plugin-bbd-push # Encapsulates the response returned from the GDPush class. Includes a specific README.md. cordova-plugin-bbd-serversideservices # Provides an ability to use BlackBerry Dynamics Server Based Services. # It returns all the needed information about service in JSON format. # Includes a specific README.md. cordova-plugin-bbd-socket # Implements the Secure Socket communications APIs. cordova-plugin-bbd-specificpolicies # Reads app-specific policy and returns it in JSON format

Steps to get started with the BlackBerry Dynamics SDK for Cordova

21

Page 22: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

# Includes a specific README.md. cordova-plugin-bbd-sqlite # Instantiates a secure database object for data manipulation. cordova-plugin-bbd-storage # Represents secure file system and secure storage. # Includes a specific README.md. cordova-plugin-bbd-tokenhelper # Requests token from server-side and processes the callback on the response. # Includes a specific README.md. cordova-plugin-bbd-xmlhttprequest # Instatiates a JavaScript object for an easy way to securely retrieve data from a URL without having to do a full page refresh # Includes a specific README.md. SampleApplications/ # Individual samples com.good.gd.example.pg.apachehttp com.good.gd.example.pg.appkinetics.client com.good.gd.example.pg.appkinetics.server com.good.gd.example.pg.blank com.good.gd.example.pg.mailto com.good.gd.example.pg.onprogress com.good.gd.example.pg.policy com.good.gd.example.pg.rssreader com.good.gd.example.pg.sqlite com.good.gd.example.pg.unittest

Steps to get started with the BlackBerry Dynamics SDK for Cordova

22

Page 23: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Using plug-ins to enable your apps

The BlackBerry Dynamics SDK for Cordova comes with Cordova-style plug-ins to enable your apps. Each plug-in represents a specific BlackBerry Dynamics feature. For a description of the available plug-ins, see Directory structure and available plug-ins.

The plug-ins are available for local installation only. You cannot install them from NPM. The SDK includes the full set of plug-ins, so you can install them by using the cordova command and specifying the file system path.

You can use the cordova-plugin-bbd-all plug-in to install all the plug-ins with a single command. You can add plug-ins before or after you add a platform.

In Cordova app development, it is not necessary to use an IDE because Cordova provides command-line tools for compiling, building, and running apps. Android Studio and Xcode are also supported.

Installing the Configure plug-inYou install the Configure plug-in before you install the Base plug-in. The Configure plug-in modifies the Base plug-in so that it can be added to your Cordova projects (for example, setting the paths of the home directories). The Base plug-in adds the configuration that enables the BlackBerry Dynamics SDK in your app.

You have three options for installing the Configure plugin.

Option 1: Use the default installation path

Instead of specifying the SDK paths, use the following:

cordova plugin add <path_to_package>/BlackBerry_Dynamics_SDK_for_Cordova_<version>/plugins/cordova-plugin-bbd-configure

If you installed the BlackBerry Dynamics SDK for Android and BlackBerry Dynamics SDK for iOS in the default locations, the Configure plug-in will use the default install path.

• If installed using the Android SDK Manager tool, the default location for the BlackBerry Dynamics SDK for Android is $ANDROID_HOME/extras/blackberry/dynamics_sdk/sdk. The ANDROID_HOME environment variable must be set.

• The default location for the BlackBerry Dynamics SDK for iOS is ~/Library/Application Support/BlackBerry/Good.platform/iOS/Frameworks/GD.framework.

Option 2: Specify explicit paths

Specify the explicit path for the BlackBerry Dynamics SDK for Android and the BlackBerry Dynamics SDK for iOS:

5

Using plug-ins to enable your apps

23

Page 24: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

cordova plugin add <path_to_package>/BlackBerry_Dynamics_SDK_for_Cordova_<version>/plugins/cordova-plugin-bbd-configure--variable bbdSDKForAndroid="/Users/<user>/Downloads/gdsdk-release-<version>/sdk" --variable bbdSDKForiOS="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GD.framework"Specify the explicit path for the BlackBerry Dynamics SDK for iOS and the automatic path for the BlackBerry Dynamics SDK for Android:

cordova plugin add <path_to_package>/BlackBerry_Dynamics_SDK_for_Cordova_<version>/plugins/cordova-plugin-bbd-configure--variable bbdSDKForiOS="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GD.framework"

Option 3: Specify that one or more SDKs are not installed

Specify that the BlackBerry Dynamics SDK for Android is not installed:

cordova plugin add <path_to_package>/BlackBerry_Dynamics_SDK_for_Cordova_<version>/plugins/cordova-plugin-bbd-configure--variable bbdSDKForiOS="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GD.framework" --variable ignoreFailure="true"Specify that the BlackBerry Dynamics SDK for iOS in not installed:

cordova plugin add <path_to_package>/BlackBerry_Dynamics_SDK_for_Cordova_<version>/plugins/cordova-plugin-bbd-configure--variable bbdSDKForAndroid="/Users/<user>/Downloads/gdsdk-release-<version>/sdk" --variable ignoreFailure="true"Setting ignoreFailure="true" makes the Configure plug-in ignore errors that it encounters while processing explicit or automatic SDK paths. Use this option if you want to develop a Cordova app on one platform only, or if you use the BlackBerry Dynamics SDK for one platform only.

The Base plug-inThe Base plug-in (cordova-plugin-bbd-base) is the main and most important plug-in because it adds the configuration that enables the BlackBerry Dynamics SDK in your app. All of the other plug-ins depend on the Base plug-in.

The Base plug-in supports the "mailto:" URL scheme, RFC-2368 and RFC-6068, to allow the app user to compose email messages. To create the email message, the app will use a secure email service provider such as BlackBerry Work, if available, or a native email application, if available and allowed by the enteprise policy.

By default, the Base plug-in does not support email attachments. You can add the MailTo plug-in (cordova-plugin-bbd-mailto) to enable email attachments.

Using plug-ins to enable your apps

24

Page 25: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Example: Adding the Base plug-in

cd BlackBerry_Dynamics_for_Cordova_<version>/plugins cordova create <CordovaApp> <my.company.package.name> <CordovaAppName> cd <CordovaApp> cordova plugin add ../cordova-plugin-bbd-base

Usage declaration for Face IDThe BlackBerry Dynamics SDK for iOS version 4.0.0 and later supports Face ID, a facial recognition feature available for some iOS devices. In the BlackBerry Dynamics profile in UEM or security policy in standalone Good Control, the Face ID option is enabled by default. For more details about Face ID, see the BlackBerry Dynamics SDK for iOS API Reference.

BlackBerry Dynamics apps that use Face ID must declare usage of the Face ID capability. The Base plug-in can add a declaration of Face ID usage to an app by inserting the NSFaceIDUsageDescription property into the Info.plist file with the value “Enables authentication without a password.”

The Base plug-in adds this declaration by default. To add the declaration manually, either globally or for the iOS platform specifically, set the following preference in the root config.xml file:

<preference name="addFaceIDUsage" value="On" />You can set the value to “Off” to prevent the automatic addition of the usage declaration. As a best practice, you should only prevent the automatic addition of the usage declaration if the app uses Face ID for a purpose other than BlackBerry Dynamics integration.

Localized versions of the usage message are available as InfoPlist.strings files in cordova-plugin-bbd-base/src/ios/resources/Localization/. To add and use the localized strings, see About Information Property List Files.

Check the version of installed plug-insTo check the version of the plug-ins that you've installed, use either of the following commands:

• cordova plugins list

• cordova plugin

Security of Cordova localStorageTake note of the following items about the the security of localStorage in relation to GDSecureStorage. For more information about GDSecureStorage, see the BlackBerry Dynamics API reference.

Using plug-ins to enable your apps

25

Page 26: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Item Description

Use localStorage.getLength(), not localStorage.length

To get the length of GDSecureStorage, do not use localStorage.length. Use the following method instead: localStorage.getLength()This method returns the size of "localStorage" (GDSecureStorage).

localStorage operations secured by the SDK

• If you use localStorage.setItem(key, value) to write values to localStorage, it is stored in GDSecureStorage and is protected.

• If you use localStorage.getItem(key) to read values from localStorage, it is read from GDSecureStorage.

• If you use localStorage.removeItem(key) to remove some value from localStorage, it is removed from GDSecureStorage.

• If you use localStorage.key(index) to get the key by index from localStorage, the key is retrieved from GDSecureStorage.

• If you use localStorage.clear() to clear localStorage, GDSecureStorage is cleared.

localStorage operations not secured by the SDK

• If you write values to localStorage with localStorage[key] = value the value is not stored in GDSecureStorage and is not protected. It is stored in the native Storage object.

• If you read a value from localStorage with var value = localStorage[key] the value is not retrieved from GDSecureStorage but from the native Storage object.

• If you use localStorage.length to get the size of localStorage, this returns the length of native Storage object, not the length of GDSecureStorage. Use localStorage.getLength() instead.

Using plug-ins to enable your apps

26

Page 27: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Sample apps

Sample app Description

ApacheHttp Demonstrates the use of the GDHTTPRequest plug-in APIs.

AppKinetics Client and Server Demonstrates how to use the file transfer service of the AppKinetics APIs.

Blank Provides an empty skeleton app that you can use as a starting point.

Mailto Demonstrates how to use the "mailto" service to send email.

OnProgress Demonstrates the proper usage of the "onprogress" event of GDFileTransfer plugin APIs.

Policy Demonstrates how to use app-specific policies and server-side services.

RssReader Demonstrates how to use GDHTTPRequest and GDStorage APIs to fetch RSS feeds.

SQLite Demonstrates how to use secure storage APIs.

UnitTest Demonstrates how to use all APIs supported in this version of the SDK.

6

Sample apps

27

Page 28: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Testing and troubleshooting

Automated test support library for iOSThe BlackBerry Dynamics SDK for iOS comes with an automated test support library. It's composed of source code and documentation on its use.

See the installed directory:

~/Library/Application Support/BlackBerry/Good.platform/iOS/AutomatedTestSupport/

In addition use of the automated test support library is illustrated in the Sample apps in Objective-C.

Logging and diagnosticsThe processing activity of the BlackBerry Dynamics Runtime is logged by the runtime itself. The activity log is written to the BlackBerry Dynamics secure container on the device after deployment. You might be asked to provide the log file to the BlackBerry Dynamics technical support team, but this is typically only necessary for complex support issues.

Log message categoriesMessages in the activity log are assigned to one of four categories:

• Errors: critical failures

• Warnings: failures that arise but from which the BlackBerry Dynamics Runtime has recovered

• Info: normal operational activity

• Detailed: additional diagnostic information used for troubleshooting complex problems

You can configure the logging system to filter some or all messages. By default, only messages that belong to the Errors, Warnings, and Info categories are printed.

The logging locations on the IDE console and device container are configured differently and independently. In principle, you control the console log and the BlackBerry UEM administrator controls the container log.

7

Testing and troubleshooting

28

Page 29: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Configure detailed logging for the Xcode consoleMessages printed to the Xcode console are configured in the build targets of the app project. Different targets can have different activity logging configurations. You can set logging to be detailed or selective. Changes to the console logging configuration take effect the next time the target is built and run. Changes made to console logging do not affect the container log.

1. Open the app’s Info.plist file.

2. Add a row with GDConsoleLogger as its key.

3. Set String as the type of the new row.

4. Set GDFilterNone as the value of the new row.

Configure selective logging for the Xcode consoleIf there are multiple Info.plist files, check that you are editing the correct one by opening the Info tab of the app target being built to make sure the new settings are there.

As with detailed logging, the console will only include log messages that are not in any of the categories specified in the Info.plist.

To set the target’s activity logging configuration to print a selection of message categories, do the following:

1. Open the app Info.plist file.

2. Add a row with GDConsoleLogger as its key or change the existing row as follows:

a. Set Array as the type of the logger row.

b. For each category you don’t want to include, add a row under the logger row as an item in the logger’s array.

c. Set the item to type String.

d. Set the value to one of the following:

• GDFilterDetailed

• GDFilterInfo

• GDFilterWarnings

• GDFilterErrors

Configure logging in Good ControlYou can specify the message categories that are recorded in the container log file in the Good Control management console. To configure logging, you must be a Good Control administrator. Container logging can be set for a particular installation of the app provisioned for a specific user. Selective logging for the container is not supported.

Testing and troubleshooting

29

Page 30: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Changes that you make to container logging are effective immediately if the app is running and connected to the BlackBerry Dynamics infrastructure. Otherwise, changes are effective as soon as app does connect. Changes to container logging have no effect on the adb logcatXcode logging.

The app can export or upload the container log file using the BlackBerry Dynamics API. For more information, see the function definitions in the GDFileSystem class reference in the BlackBerry Dynamics SDK for iOS API Reference.

GDLogManager class for log uploadingYou can use the GDLogManager class that is included with the BlackBerry Dynamics SDK to monitor app log file uploads that are initiated by end users. This class does not manage or display information about log uploads initiated by the BlackBerry UEM administrator's policies or explicit actions.

The following samples that are delivered with the SDK illustrate how to use GDLogManager:

• Objective-C samples: RSSReader, BypassUnlock, GreetingsClient and GreetingsServer

• Swift samples: all

GDLogManager's displayed information and functions include the following:

• Size of whole upload

• Amount of data uploaded so far

• Events that indicate the following states:

◦ Upload completed

◦ Upload abandoned or canceled

◦ Upload suspended

◦ Upload resumed after suspension

• Actions for managing a log upload:

◦ Cancel upload

◦ Suspend upload

◦ Resume upload

For more detail, see GDLogManager in the SDK programming reference.

When detailed logging is disabled by policy, calling any API in the GDLogManager class has no effect. You are encouraged to first check the setting of this policy in the app configuration, using the getappConfig API, and if detailed logging is enabled, then present the log upload progress UI or any other related UI.

Testing and troubleshooting

30

Page 31: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Readying your app for deployment: server setup

You want to test your app on a BlackBerry server before you deploy it into production. You need to become familiar with how to setup and configure such a server. You have options available: either BlackBerry UEM or the older Good Control.

Check with your IT or other department to see what test servers might already be available in your organization.

BlackBerry UEM preferred

BlackBerry UEM is the primary server configuration to test and deploy your app.

If you upgrade from Good Control to BlackBerry UEM, you not only get to use the great feature set that Good Control provides but you also get to take advantage of an enhanced feature set such as:

• Support for more policies for operating systems

• Better app management

• More container types

• Improved administration and provisioning

• Advanced connectivity and networking

• Expanded compliance and integrity checking

• Additional email, content, location, and certificate features

• Access to BlackBerry Web Services APIs

For information on how to use BlackBerry UEM to manage BlackBerry Dynamics apps, see the BlackBerry UEM Administration Guide. For more information on the benefits of using BlackBerry UEM, see Benefits of upgrading from Good Control to BlackBerry UEM.

Older Good Control

The older Good Control server is also available, but BlackBerry encourages you to use BlackBerry UEM for your tests and deployment. For information about getting started with Good Control, see Developer Bootstrap: Good Control Essentials.

8

Readying your app for deployment: server setup

31

Page 32: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

Legal notice

©2018 BlackBerry Limited. Trademarks, including but not limited to BLACKBERRY, BBM, BES, EMBLEM Design, ATHOC, MOVIRTU and SECUSMART are the trademarks or registered trademarks of BlackBerry Limited, its subsidiaries and/or affiliates, used under license, and the exclusive rights to such trademarks are expressly reserved. All other trademarks are the property of their respective owners.

Android, Android Wear, Android Studio, Android SDK, Google, and Google Drive are trademarks of Google Inc. Samsung, Samsung Galaxy Note, Samsung Pass, Samsung Pass SDK and S5 are trademarks of Samsung Electronics Co., Ltd. Gradle is a trademark of Gradle Inc. Apache is a trademark of The Apache Software Foundation. RSA is a trademark of RSA Security. Microsoft, Active Directory, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Xamarin is a trademark of Xamarin Inc. GitHub is a trademark of GitHub Inc. All other trademarks are the property of their respective owners.

iOS, Swift, OS X, Apple, and Xcode are trademarks of Apple Inc. Google Play is a trademark of Google Inc. RSA is a trademark of RSA Security. Microsoft, Active Directory, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. GitHub is a trademark of GitHub Inc. Xamarin is a trademark of Xamarin Inc. All other trademarks are the property of their respective owners.

Apache Cordova is a trademark of The Apache Software Foundation. iOS Android is a trademark of Google Inc. is a trademark of Cisco Systems, Inc. and/or its affiliates in the U.S. and certain other countries. iOS® is used under license by Apple Inc. RSA is a trademark of RSA Security. All other trademarks are the property of their respective owners.

This documentation including all documentation incorporated by reference herein such as documentation provided or made available on the BlackBerry website provided or made accessible "AS IS" and "AS AVAILABLE" and without condition, endorsement, guarantee, representation, or warranty of any kind by BlackBerry Limited and its affiliated companies ("BlackBerry") and BlackBerry assumes no responsibility for any typographical, technical, or other inaccuracies, errors, or omissions in this documentation. In order to protect BlackBerry proprietary and confidential information and/or trade secrets, this documentation may describe some aspects of BlackBerry technology in generalized terms. BlackBerry reserves the right to periodically change information that is contained in this documentation; however, BlackBerry makes no commitment to provide any such changes, updates, enhancements, or other additions to this documentation to you in a timely manner or at all.

This documentation might contain references to third-party sources of information, hardware or software, products or services including components and content such as content protected by copyright and/or third-party websites (collectively the "Third Party Products and Services"). BlackBerry does not control, and is not responsible for, any Third Party Products and Services including, without limitation the content, accuracy, copyright compliance, compatibility, performance, trustworthiness, legality, decency, links, or any other aspect of Third Party Products and Services. The inclusion of a reference to Third Party Products and Services in this documentation does not imply endorsement by BlackBerry of the Third Party Products and Services or the third party in any way.

EXCEPT TO THE EXTENT SPECIFICALLY PROHIBITED BY APPLICABLE LAW IN YOUR JURISDICTION, ALL CONDITIONS, ENDORSEMENTS, GUARANTEES, REPRESENTATIONS, OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY CONDITIONS, ENDORSEMENTS, GUARANTEES, REPRESENTATIONS OR WARRANTIES OF DURABILITY, FITNESS FOR A PARTICULAR PURPOSE OR USE, MERCHANTABILITY, MERCHANTABLE QUALITY, NON-

9

Legal notice

32

Page 33: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

INFRINGEMENT, SATISFACTORY QUALITY, OR TITLE, OR ARISING FROM A STATUTE OR CUSTOM OR A COURSE OF DEALING OR USAGE OF TRADE, OR RELATED TO THE DOCUMENTATION OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY SOFTWARE, HARDWARE, SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES REFERENCED HEREIN, ARE HEREBY EXCLUDED. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE OR PROVINCE. SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES AND CONDITIONS. TO THE EXTENT PERMITTED BY LAW, ANY IMPLIED WARRANTIES OR CONDITIONS RELATING TO THE DOCUMENTATION TO THE EXTENT THEY CANNOT BE EXCLUDED AS SET OUT ABOVE, BUT CAN BE LIMITED, ARE HEREBY LIMITED TO NINETY (90) DAYS FROM THE DATE YOU FIRST ACQUIRED THE DOCUMENTATION OR THE ITEM THAT IS THE SUBJECT OF THE CLAIM.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION, IN NO EVENT SHALL BLACKBERRY BE LIABLE FOR ANY TYPE OF DAMAGES RELATED TO THIS DOCUMENTATION OR ITS USE, OR PERFORMANCE OR NON-PERFORMANCE OF ANY SOFTWARE, HARDWARE, SERVICE, OR ANY THIRD PARTY PRODUCTS AND SERVICES REFERENCED HEREIN INCLUDING WITHOUT LIMITATION ANY OF THE FOLLOWING DAMAGES: DIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, INDIRECT, SPECIAL, PUNITIVE, OR AGGRAVATED DAMAGES, DAMAGES FOR LOSS OF PROFITS OR REVENUES, FAILURE TO REALIZE ANY EXPECTED SAVINGS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, LOSS OF BUSINESS OPPORTUNITY, OR CORRUPTION OR LOSS OF DATA, FAILURES TO TRANSMIT OR RECEIVE ANY DATA, PROBLEMS ASSOCIATED WITH ANY APPLICATIONS USED IN CONJUNCTION WITH BLACKBERRY PRODUCTS OR SERVICES, DOWNTIME COSTS, LOSS OF THE USE OF BLACKBERRY PRODUCTS OR SERVICES OR ANY PORTION THEREOF OR OF ANY AIRTIME SERVICES, COST OF SUBSTITUTE GOODS, COSTS OF COVER, FACILITIES OR SERVICES, COST OF CAPITAL, OR OTHER SIMILAR PECUNIARY LOSSES, WHETHER OR NOT SUCH DAMAGES WERE FORESEEN OR UNFORESEEN, AND EVEN IF BLACKBERRY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN YOUR JURISDICTION, BLACKBERRY SHALL HAVE NO OTHER OBLIGATION, DUTY, OR LIABILITY WHATSOEVER IN CONTRACT, TORT, OR OTHERWISE TO YOU INCLUDING ANY LIABILITY FOR NEGLIGENCE OR STRICT LIABILITY.

THE LIMITATIONS, EXCLUSIONS, AND DISCLAIMERS HEREIN SHALL APPLY: (A) IRRESPECTIVE OF THE NATURE OF THE CAUSE OF ACTION, DEMAND, OR ACTION BY YOU INCLUDING BUT NOT LIMITED TO BREACH OF CONTRACT, NEGLIGENCE, TORT, STRICT LIABILITY OR ANY OTHER LEGAL THEORY AND SHALL SURVIVE A FUNDAMENTAL BREACH OR BREACHES OR THE FAILURE OF THE ESSENTIAL PURPOSE OF THIS AGREEMENT OR OF ANY REMEDY CONTAINED HEREIN; AND (B) TO BLACKBERRY AND ITS AFFILIATED COMPANIES, THEIR SUCCESSORS, ASSIGNS, AGENTS, SUPPLIERS (INCLUDING AIRTIME SERVICE PROVIDERS), AUTHORIZED BLACKBERRY DISTRIBUTORS (ALSO INCLUDING AIRTIME SERVICE PROVIDERS) AND THEIR RESPECTIVE DIRECTORS, EMPLOYEES, AND INDEPENDENT CONTRACTORS.

IN ADDITION TO THE LIMITATIONS AND EXCLUSIONS SET OUT ABOVE, IN NO EVENT SHALL ANY DIRECTOR, EMPLOYEE, AGENT, DISTRIBUTOR, SUPPLIER, INDEPENDENT CONTRACTOR OF BLACKBERRY OR ANY AFFILIATES OF BLACKBERRY HAVE ANY LIABILITY ARISING FROM OR RELATED TO THE DOCUMENTATION.

Prior to subscribing for, installing, or using any Third Party Products and Services, it is your responsibility to ensure that your airtime service provider has agreed to support all of their features. Some airtime service providers might not offer Internet browsing functionality with a subscription to the BlackBerry® Internet Service. Check with your service provider for availability, roaming arrangements, service plans and features. Installation or use of Third Party Products and Services with BlackBerry's products and services may require one or more patent, trademark, copyright, or other licenses in order to avoid infringement or violation of third party rights. You are solely responsible for determining whether to use Third Party Products and Services and if any third party licenses are required to do so. If required you are responsible for acquiring them. You should not install or use Third Party Products and Services until all necessary licenses have been acquired. Any Third Party Products and Services that are provided with BlackBerry's products and services are provided as a convenience to you and are provided "AS IS" with no

Legal notice

33

Page 34: BlackBerry Dynamics SDK for Cordova-4.0-Development …help.blackberry.com/en/blackberry-dynamics-sdk-cordova/... · Supported languages ... Recommended development environment: macOS,

express or implied conditions, endorsements, guarantees, representations, or warranties of any kind by BlackBerry and BlackBerry assumes no liability whatsoever, in relation thereto. Your use of Third Party Products and Services shall be governed by and subject to you agreeing to the terms of separate licenses and other agreements applicable thereto with third parties, except to the extent expressly covered by a license or other agreement with BlackBerry.

The terms of use of any BlackBerry product or service are set out in a separate license or other agreement with BlackBerry applicable thereto. NOTHING IN THIS DOCUMENTATION IS INTENDED TO SUPERSEDE ANY EXPRESS WRITTEN AGREEMENTS OR WARRANTIES PROVIDED BY BLACKBERRY FOR PORTIONS OF ANY BLACKBERRY PRODUCT OR SERVICE OTHER THAN THIS DOCUMENTATION.

BlackBerry Enterprise Software incorporates certain third-party software. The license and copyright information associated with this software is available at http://worldwide.blackberry.com/legal/thirdpartysoftware.jsp.

BlackBerry Limited2200 University Avenue EastWaterloo, OntarioCanada N2K 0A7

BlackBerry UK Limited200 Bath RoadSlough, Berkshire SL1 3XEUnited Kingdom

Published in Canada

Legal notice

34