These release notes apply to an earlier version of the software and the corresponding documentation. Some links may no longer be active.

10.2.1 Gold Release Notes

This release is for the 10.2.1 SDK OS and simulator only. There are no API updates included.

Momentics IDE for BlackBerry

Screen showing the IDE apps highlight.

The Momentics IDE for BlackBerry has a new and simplified interface. The Momentics IDE includes all of the tools that you need. Take a look at the release notes.

BlackBerry 10 Device Simulator

Screen showing the simulator running on a computer.

The BlackBerry 10 Device Simulator allows you to simulate the BlackBerry 10 OS environment to help you develop your app. Take a look at the release notes.

Plug-in for Microsoft Visual Studio

Screen showing the core logo with a plug coming out from it.

Prefer to develop in Microsoft Visual Studio? You can use the BlackBerry Native Plug-in for Microsoft Visual Studio. Take a look at the release notes.


The BlackBerry 10 Native SDK is comprised of two parts that help us bring you updates faster and more efficiently. The Native SDK provides all the libraries that you need to build your apps while the Momentics IDE for BlackBerry provides the development and testing environment that brings it all together. To make the download fast and easy, the BlackBerry 10 Native SDK is installed separately. When you start the Momentics IDE, you can download and install the BlackBerry 10 Native SDK from within the IDE. You can also update the tools from within the IDE.

Momentics IDE 2.0 is our first update to the BlackBerry 10 Native SDK for the 10.2 Gold release. The Momentics IDE and the BlackBerry 10 Native SDK are now available as separate releases, so their version numbers are distinct. You’ll notice that the downloads and release notes have been updated to reflect this.


Upgrading to 10.2 Gold

If you're upgrading from the 10.1 Gold version or earlier of the Native SDK, you'll notice that we've redesigned the Momentics IDE. You can upgrade in two ways: using the installer or using the IDE. We recommend using the installer to get a fresh installation of the new IDE.

Using the installer


If you're using the installer, the redesigned Momentics IDE for BlackBerry needs a unique location to install. You have two options for upgrading using the installer:

  • Uninstall the previous version, then install the new version Hover or touch for more information.
  • Install the new version to a different location Hover or touch for more information.

To download and install the IDE and 10.2 Gold version of the BlackBerry 10 Native SDK:

  1. Download the Momentics IDE for BlackBerry from the Downloads page.
  2. Complete the installation by following the on-screen instructions.
  3. Launch the Momentics IDE for BlackBerry.
  4. Select an API level (10.2 Gold in this case) or, if a device is connected to the computer, the IDE automatically detects and installs the appropriate SDK for your device.

Using the IDE


If you're upgrading using the Momentics IDE, you can update the IDE only or the SDK and IDE. To update the IDE only, on the Help menu, click Check for Updates. To update the SDK and IDE, complete the following in the Momentics IDE:

  1. On the Help, click Update API level.
  2. Locate the 10.2 Gold version of the BlackBerry 10 Native SDK and click Install.

In the 10.1 version of the IDE, if you clear the Update IDE check box while installing the 10.2 SDK, you must update the IDE separately by clicking Help > Check for Updates. For compatibility, the 10.2 version of the SDK requires the 10.2 version of the IDE.

 

For more information about API levels

For Cascades, see API levels in Build, test, and deploy your app.
For core, see API levels in Using the Momentics IDE.

Targeting multiple API levels

If you're using the 10.2 Gold release version of the SDK but you still want to develop for a BlackBerry 10 device that's running version 10.1 or earlier of the OS, you need to download an additional SDK by using the update site. To do this, in the QNX Momentics IDE for BlackBerry, complete the following:

  1. On the Help menu, click Update API Levels.
  2. On the API Levels dialog box, click Install for the API level that you want.
  3. When the API level finishes installing, click OK.

For Cascades, see Set up your environment.
For core, see Set up your environment

.

Finding the appropriate version

Here's a quick summary of the versions you'll need:

  • If you are developing for a BlackBerry 10 Dev Alpha device, you need to download the 10.0.10.263 API level from the update site.
  • If you are developing for the BlackBerry Z10 smartphone or the BlackBerry Q10 smartphone, you need to download an API level from the update site that matches the device version (10.0 or 10.1) that's provided by your wireless service provider. You can verify the device version by opening the Settings app, tapping About, selecting OS in the Category drop-down list, and checking the version that's listed in the OS Version field.

For more information about developing apps that work on different versions of the BlackBerry 10 Native SDK, see Appropriate version of the BlackBerry Native SDK in the BlackBerry Support Community Forums.

Reverting to an earlier software version



The following procedure will delete all data and applications on the BlackBerry device. If possible, back up the data prior to performing the procedure. Any backups created while running a developer build of the BlackBerry 10 OS will not be able to be restored once the production BlackBerry 10 OS has been reloaded.

If you've upgraded the software version on your device to a recent developer build of the BlackBerry 10 OS, and you want to revert to a software version that's been released by your wireless service provider, complete the following:

  1. Open BlackBerry Link.
  2. Connect the device using a micro USB cable.
  3. Under Devices, click the device name.
  4. In the upper-right corner, click Preferences.
  5. On the left, click Reload Device Software.
  6. Click Reload.
  7. Click OK.

For more information on reverting to an earlier software version, read this knowledge base article.

Back to Top


Cascades and Core release notes

Highlights

Cascades | Core

 

Screen showing the difference between accessibly-designed text and regular-text.

Accessibility

Screen showing the BlackBerry logo representing the new BlackBerry ID service APIs.

ID service APIs

Screen showing the headless apps highlight.

Headless apps

Adding assistive technologies to your app allows more users to enjoy your app, making your app more accessible. We've added new Accessibility APIs to allow you to pair with assistive technologies. For more information on the APIs, take a look at the Accessibility documentation. For more information on validating your code for accessibility, take a look at Building accessibility into your app.

Let your users access off-device services and content that require user authentication or authorization by integrating the Identity Service into your app. Your users can sign in with their identity provider, using their BlackBerry device, and access content or services that they have with that identity provider from within your app and elsewhere on their device. For more information, take a look at the API reference.

We now support headless apps in BlackBerry 10. A headless app runs in the background on the BlackBerry 10 OS. Unlike other applications with a UI and an associated active frame, a headless application is not under the direct control of a user. For more information on headless apps, take a look at the documentation.


Core | Cascades

Screen showing the headless apps highlight.
Screen showing the app signing changes highlight.
Screen showing the new permissions highlight.

Headless apps

App signing changes

New permissions

We now support headless apps in BlackBerry 10. A headless app runs in the background on the BlackBerry 10 OS. Unlike other applications with a UI and an associated active frame, a headless application is not under the direct control of a user. For more information on headless apps, take a look at the documentation.

In this release, the way that you sign your apps (to prepare them for distribution in the BlackBerry World storefront) has changed. Previously, you used code signing keys that you obtained from BlackBerry to sign your apps. Now, you use a BlackBerry ID token that's associated with your BlackBerry ID. To learn more about these changes, see Signing apps.

We've added a few new permissions that you can specify for your apps. Permissions let your app access sensitive or restricted functionality on the device, such as contact information and shared files. To see what permissions are new, check out the New in this release section. For more information on permissions, take a look at App permissions.

Back to Top


New in this release

Cascades | Core

Cascades UI framework


Custom list item

We've added a new CustomListItem class that allows you to create custom list items that has the StandardListItem look. This class acts as the base class when creating new list items and can be used in a ListView. CustomListItem objects allow you to specify the type of content, but also have two optional features: highlights and dividers. A highlight determines what the list item looks like when it's selected, and is represented by the highlightAppearance property. You can use a divider to separate the list item from adjacent items in the list. A flag to indicate whether the divider should be shown is represented by the dividerVisible property. You can specify any Cascades control as the content, which appears in the body of the list item. The content is represented by the content property. For more information, check out the API reference.

Delegate

We're introducing a new API called Delegate along with properties delegate and deleteActivationPolicy. The Delegate class provides a generic delegate that instantiates an object when it is active, and deletes it when it's not active. A Delegate can be used on a Tab to let you manage how content is loaded. The Delegate class is similar to a ComponentDefinition, but provides object lifecycle management similar to ControlDelegate using the active flag. So, you could use Delegate class instead of ComponentDefinition. The TabDelegateActivationPolicy.Default toggles the active flag on selecting tabs. For more details on the flags, take a look at the TabDelegateActivationPolicy API reference.

Custom input for text areas

TextArea objects now allow for custom input through TextAreaInputMode::Custom. Custom input will ignore all key input that Cascades handles for you, and you can explicitly handle the key input in your app. All spell checking and features are disabled as well, but your app could implement its own integration with the Input Method Framework. For more information, take a look at the API reference.

Custom fonts

We're introducing a new API for using custom fonts in the text controls with the new FontFaceRule object in the TextStyleDefinition. With this object you can add an internal font family name for an external font. Currently we support TrueType font (TTF) and OpenType font (OTF) formats, and these font files are added as asset files similar to how you add image assets. For more information, take a look at the API reference.

Cascades platform APIs


Asynchronous data models

Need to access large amounts of external data? We've added an asynchronous data model (AsyncDataModel) to the BlackBerry 10 Native SDK to help. Large sets of data must be managed differently to avoid start-up delays, slow scrolling, and other indicators of poor performance. For more information, see the documentation or the API reference.

Invocation framework

There is new functionality in the invocation framework. We've added a new errorCode() function to InvokeReply, and added additional features to InvokeManager. You can now use the selectListItem() function in InvokeManager by passing the InvokeListCursorDirection::Type to replace the current list item with next or previous list item. For more information, take a look at the InvokeManager API reference. You can now invoke apps using active text, similar to a hyperlink. For more information, see Invoking apps using active text.

Maps

We've updated the Maps API to include new classes and new functionality for geographic shapes (GeoShape and GeoPolygon) and lines (GeoPolyline and Polyline). You can use MapView to display a map that the user can interact with. You can also display location-specific information including points of interest and locations using GeoLocation. You can drop pins for points of interest and show bubbles to present more details about a point of interest using Marker.

We've updated the Maps APIs.

Miracast cards

We've added Miracast card support to the BlackBerry 10 Native SDK. Miracast allows you to wirelessly display your app to compatible displays in up to 1080p video format and 5.1 surround sound format. A Miracast card can be invoked to discover and establish a connection to a nearby Miracast device. You can invoke the Miracast card in two modes: play on and show on. For more information, take a look at the Miracast card documentation.

Notification settings

You can now using the new Notification settings API to access and modify both global and application-specific settings. You can use this to access and modify device profile information. For more information, take a look at the API reference.

Personal information management (PIM)

We've added a new FileAttachment class that includes information about a file attachment, such as file path to the downloaded attachment on the file system, MIME type, and sender. We also now have an AttachmentFilter class that lets you filter lists of attachments based on key-value pairs. The Account class can now check if data is stored externally through the isExternalData() function. The AccountsChanged class now has getter and setter functions for connected accounts, invalidated accounts, synced accounts, and sync started accounts.

CalendarEvent objects can now get and set their original start time. CalendarService can serialize a calendar event as an ICalendar byte array through the eventToICalendarString() function, and also reply to an invitation with the replyWithMessageId() function. ContactsService can now convert/export/import contacts to VCards. The ICalendarData API can now get and set the body MIME type. The Message API can check if a message should be in the priority inbox through the isPriorityInbox() function. Lastly, the MessageService API has functions to correspond to the additional accounts and attachment APIs.

Screenshot

There is a new Screenshot API that allows your application to capture the contents of the display and save it to the camera roll. The captured image is saved to the camera roll (a sequentially numbered image available in the Pictures application, just like taking a picture with the camera). When capturing the display, you can save the image in any one of the formats specified by ScreenshotFormat.

WiFi direct

We've added a new WiFiDirect API that provides an entry point to accessing information about WiFiDirect devices, or establishing connections with those devices. For more information, see the API reference.

BlackBerry Social Platform


Registration

You can suppress the progress dialog when your app registers with BBM to create a more seamless experience for the user by calling requestRegisterApplicationSilent(). When registration is complete, a system toast appears to the user, confirming that your app is connected to BBM. A new registration state, BlockedEnterprisePerimeter, is available to indicate that registration with the BBM social platform is blocked because your app is installed in the Work perimeter. To connect to BBM, your app must be installed in the Personal perimeter.

User settings

You can retrieve the version of BBM that is running on a user's device by calling bbmVersion(). You can then determine which version of the BlackBerry OS is running on the device, for example, Blackberry 7 and earlier, or BlackBerry 10. You can determine whether a user has completed the setup of BBM on their device by signing in with their BlackBerry ID (Setup > BlackBerry Messenger) by calling isBbmSetup().

Other features


Flurry analytics

Flurry, the industry-leading analytics service, is now available for BlackBerry 10 apps. Get access to real-time data about how your apps are used. Find out about your customers; who they are, where they live, and what devices they use. You can track anything relevant to your app such as when a consumer makes a purchase, completes a level, or uses a key feature. Here's where you can find more information.

Signal-slot connections

We have a new recommendation regarding your signal and slot connections. The QObject::connect() functions returns a Boolean value, and if false is returned, the signal and slot function are not connected. On failure, a warning is sent to the device log, but the application continues by default. To see specific recommendations for how you should deal with this situation, take a look at the signal-slot connections section of the upgrading guide.

Back to Top


Core | Cascades

App permissions


The following new permissions have been added:

  • Automatic Input Control (_sys_inject_events)
  • Control Notification Settings (access_notify_settings_control)
  • Gamepad (use_gamepad)
  • Phone Control (control_phone)
  • Run in Background (_sys_run_headless)
  • Screen Capture (use_camera_desktop)
  • User Contact Information (read_personally_identifiable_information)
  • Wi-Fi Connection (access_wifi_public)

Note that the run_when_backgrounded permission was previously called "Run in Background". This permission is now called "Run as Active Frame", and the _sys_run_headless permission is called "Run in Background".

For more information on App permissions, see the documentation.

BBM Social Platform


Now you can suppress the progress dialog when your app registers with BBM to create a more seamless experience for the user by calling bbmsp_register_silent(). When registration is complete, a system toast appears to the user, confirming that your app is connected to BBM.

You can retrieve the version of BBM that is running on a user's or a contact's device by calling bbmsp_profile_get_bbm_version() or bbmsp_contact_get_bbm_version(). You can then determine which version of the BlackBerry OS is running on the device (for example, BlackBerry 7 and earlier, or BlackBerry 10).

You can determine whether a user has completed the setup of BBM on their device by signing in with their BlackBerry ID (Setup > BlackBerry Messenger) by calling bbmsp_is_bbm_setup().

A new registration state, BBMSP_ACCESS_BLOCKED_ENTERPRISE_PERIMETER, is available to indicate that registration with the BBM Social Platform is blocked because your app is installed in the Work perimeter. To connect to BBM, your app must be installed in the Personal perimeter.

For more information on the BBM Social Platform, see the documentation.

BlackBerry Platform Services Library


Cellular network status (cellularnetwork.h)

This is a new API with functions to determine changes to the cellular network status on the device.

Screen input guard (screen_input_guard.h)

This is a new API with functions that enable screen input guard, which is a feature of the device that turns the screen off and disables the touch screen during a phone call or similar voice chat. This API lets your app avoid unwanted touches causing unintended events.

Device information (deviceinfo.h)

Added the following data type and functions:

  • deviceinfo_hdmi_connector_t
  • deviceinfo_details_get_device_name()
  • deviceinfo_details_get_hdmi_connector()
  • deviceinfo_details_get_model_name()
  • deviceinfo_details_get_model_number()
  • deviceinfo_details_get_core_count()
  • deviceinfo_details_get_core_model()
  • deviceinfo_details_get_core_speed()
  • deviceinfo_details_get_processor_name()
  • deviceinfo_details_get_details_get_imei()
  • deviceinfo_details_get_details_get_meid()
  • deviceinfo_details_get_details_get_pin_string()

Dialog windows (dialog.h)

Added the following functions:

  • dialog_set_alert_checkbox_enabled()
  • dialog_set_alert_icon()
  • dialog_set_busy()
  • dialog_set_button_limit()
  • dialog_set_input_flags()
  • dialog_set_popuplist_allow_deselect()
  • dialog_set_popuplist_cancel_on_selection()
  • dialog_set_popuplist_show_basic_selection()

Geolocation (geolocation.h)

Added the following functions:

  • geolocation_event_get_accuracy_rotation_angle()
  • geolocation_event_get_accuracy_semi_major_axis()
  • geolocation_event_get_accuracy_semi_minor_axis()
  • geolocation_event_get_geoid_height()
  • geolocation_event_get_hdop()
  • geolocation_event_get_pdop()
  • geolocation_event_get_propagated()
  • geolocation_event_get_satellite_is_almanac_decoded()
  • geolocation_event_get_status_accuracy()
  • geolocation_event_get_status_active_request()
  • geolocation_event_get_status_background()
  • geolocation_event_get_status_passive()
  • geolocation_event_get_status_period()
  • geolocation_event_get_status_response_time()
  • geolocation_event_get_vdop()
  • geolocation_event_get_vertical_speed()
  • geolocation_event_is_accuracy_rotation_angle_valid()
  • geolocation_event_is_accuracy_semi_major_axis_valid()
  • geolocation_event_is_accuracy_semi_minor_axis_valid()
  • geolocation_event_is_geoid_height_valid()
  • geolocation_event_is_hdop_valid()
  • geolocation_event_is_latitude_valid()
  • geolocation_event_is_longitude_valid()
  • geolocation_event_is_pdop_valid()
  • geolocation_event_is_propagated_valid()
  • geolocation_event_is_status_accuracy_valid()
  • geolocation_event_is_status_active_request_valid()
  • geolocation_event_is_status_background_valid()
  • geolocation_event_is_status_passive_valid()
  • geolocation_event_is_status_period_valid()
  • geolocation_event_is_status_response_time_valid()
  • geolocation_event_is_vdop_valid()
  • geolocation_event_is_vertical_speed_valid()
  • geolocation_request_status()
  • geolocation_set_passive()
  • geolocation_set_stationary()

Menus (menu.h)

Added the following data type and functions:

  • menu_sub_item_type_t
  • menu_invocation_get_uri_match()
  • menu_request_get_bypass_target_selection_card()
  • menu_request_set_bypass_target_selection_card()
  • menu_sub_item_get_frecency()
  • menu_sub_item_get_secondary_icon()
  • menu_sub_item_get_type()

Network status (netstatus.h)

Added the following constant, data type, and functions:

  • NETSTATUS_INTERFACE_TYPE_P2P (netstatus_interface_type_t)
  • netstatus_info_t
  • netstatus_event_get_info()
  • netstatus_free_info()
  • netstatus_get_info()
  • netstatus_info_get_availability()
  • netstatus_info_get_default_gateway()
  • netstatus_info_get_default_interface()
  • netstatus_info_get_default_ip4_interface()
  • netstatus_info_get_default_ip6_interface()
  • netstatus_info_get_ftp_proxy_host()
  • netstatus_info_get_ftp_proxy_port()
  • netstatus_info_get_http_proxy_host()
  • netstatus_info_get_http_proxy_login_required()
  • netstatus_info_get_http_proxy_port()
  • netstatus_info_get_https_proxy_host()
  • netstatus_info_get_https_proxy_port()
  • netstatus_info_get_ip4_status()
  • netstatus_info_get_ip6_status()
  • netstatus_info_get_ip_status()
  • netstatus_info_get_name_server()
  • netstatus_info_get_num_default_gateways()
  • netstatus_info_get_num_name_servers()
  • netstatus_info_get_num_search_domains()
  • netstatus_info_get_search_domain()
  • netstatus_info_get_search_domains()
  • netstatus_interface_get_http_proxy_host()
  • netstatus_interface_get_http_proxy_login_required()
  • netstatus_interface_get_http_proxy_port()
  • netstatus_interface_get_ip4_status()
  • netstatus_interface_get_ip_destination_address()
  • netstatus_interface_get_mtu()
  • netstatus_interface_get_num_search_domains()
  • netstatus_interface_get_parent_interface()
  • netstatus_interface_get_search_domain()

Deprecated the following functions:

  • netstatus_get_availability()
  • netstatus_get_default_interface()
  • netstatus_event_get_availability()
  • netstatus_event_get_default_interface()
  • netstatus_event_get_http_proxy_login_required()
  • netstatus_event_get_http_proxy_host()
  • netstatus_event_get_http_proxy_port()
  • netstatus_event_get_https_proxy_host()
  • netstatus_event_get_https_proxy_port()
  • netstatus_event_get_ftp_proxy_host()
  • netstatus_event_get_ftp_proxy_port()
  • netstatus_interface_get_search_domains()

Screen events (screen.h)

Added the following function:

  • screen_event_get_context()

Virtual keyboard (virtualkeyboard.h)

Added the following constants:

  • VIRTUALKEYBOARD_LAYOUT_NUMBER
  • VIRTUALKEYBOARD_ENTER_REPLACE

Deprecated the following constant:

  • VIRTUALKEYBOARD_LAYOUT_DIAL_PAD

For more information on BlackBerry Platform Services, see the API reference.

Bluetooth Library


  • Bluetooth GATT server
    • You can now use your BlackBerry 10 device as a GATT server. The APIs are available in btgattsrv.h
  • Blutooth Human Interface Device (HID)
    • You can implement the Bluetooth HID profile to remote control HID hosts. The APIs are available in bthid.h
  • Blutooth Object Push Profile (OPP)
    • You can use the OPP APIs to send files to a paired Bluetooth device that supports OPP. The APIs are available in btopp.h
  • Bluetooth low energy
    • Added new low energy functionality to btdevice.h and btle.h.
    • Added the following constants:
      • BT_EVT_LE_DEVICE_CONNECTED
      • BT_EVT_LE_DEVICE_DISCONNECTED
      • BT_EVT_LE_NAME_UPDATED
    • Added the following functions:
      • bt_rdev_get_le_device()
      • bt_rdev_is_dual_mode()
      • bt_le_set_scan_params()

btdevice.h

Added the following constants and functions:

  • BT_EVT_DEVICE_CONNECTED
  • BT_EVT_DEVICE_DISCONNECTED
  • bt_rdev_get_current_tx_power()
  • bt_rdev_update_friendly_name()
  • bt_rdev_delete()

For more information on the Bluetooth Library, see the API reference.

Camera Library


camera_api.h

Added the following functions:

  • camera_clear_3a_face_id()
  • camera_get_3a_face_id()
  • camera_get_photo_output_framerates()
  • camera_set_3a_face_id()

Added the following enumerators to camera_error_t:

  • CAMERA_EDESKTOPCAMERAINUSE
  • CAMERA_EPOWERDOWN

camera_meta.h

Added the following function:

  • camera_meta_get_face_id()

For more information on the Camera Libary, see the API reference.

Invocation framework


In addition to the listed share target items, users can now see large app icons (358 x 358 pixels) of share targets in the target selection menu. These suggested target app icons appear based on the user's recent selections.

For more information on the Invocation framework, see the documentation.

Peripheral Discovery Library


Your app can use this API to receive notifications about the insertion or removal of peripheral devices. As well, your app can retrieve information about inserted peripherals.

For more information on the Peripheral Discovery Library, see the API reference.

Scoreloop


Default UI is available for 'Challenges' along with 'Favorite a game', 'Edit profile', 'Leaderboards', and 'Awards & Achievements'.

scui_client.h

Added the following functions:

  • SCUI_Client_NewWithCallback()
  • SCUI_Client_ShowAchievementsView()
  • SCUI_Client_ShowChallengeCreateView()
  • SCUI_Client_ShowChallengeSubmitView()
  • SCUI_Client_ShowChallengesView()
  • SCUI_Client_ShowFavoritingView()
  • SCUI_Client_ShowLeaderboardView()
  • SCUI_Client_ShowUserProfileView()

For more information on Scoreloop, see the Scoreloop SDK.

Screen Graphics Subsystem Library


screen.h

Added the display property SCREEN_PROPERTY_INTENSITY to support application-controlled brightness.

Added the window property SCREEN_PROPERTY_PERMISSIONS to support window permissions.

Added the following window permission masks:

  • SCREEN_PERMISSION_IRWIN
  • SCREEN_PERMISSION_IWWIN
  • SCREEN_PERMISSION_IXWIN
  • SCREEN_PERMISSION_IRTOP
  • SCREEN_PERMISSION_IWTOP
  • SCREEN_PERMISSION_IXTOP
  • SCREEN_PERMISSION_IRPID
  • SCREEN_PERMISSION_IWPID
  • SCREEN_PERMISSION_IXPID
  • SCREEN_PERMISSION_IRPGP
  • SCREEN_PERMISSION_IWPGP
  • SCREEN_PERMISSION_IXPGP
  • SCREEN_PERMISSION_IRUSR
  • SCREEN_PERMISSION_IWUSR
  • SCREEN_PERMISSION_IXUSR
  • SCREEN_PERMISSION_IRGRP
  • SCREEN_PERMISSION_IWGRP
  • SCREEN_PERMISSION_IXGRP
  • SCREEN_PERMISSION_IRAGP
  • SCREEN_PERMISSION_IWAGP
  • SCREEN_PERMISSION_IXAGP
  • SCREEN_PERMISSION_IROTH
  • SCREEN_PERMISSION_IWOTH
  • SCREEN_PERMISSION_IXOTH

For more information on the Screen Graphics Subsystem Library, see the API reference.

Unified Data Source Library


The Unified Data Source (UDS) Library, which is sometimes called Hub Integration, lets you add data from your app to the BlackBerry Hub. You can add alerts for events that affect your app (such as updates), or you could simply provide another location for users to access the data in your app, without having to actually open your app.

For more information on the Unified Data Source Library, see the API reference and the front page article.

VPN Extensions Library


The VPN Extensions Library lets you create extensions to the VPN service, each of which can be associated with a VPN adapter. You can use the functions in this library to perform tasks such as creating a VPN Extension context, adding a Key Agreement callback, and running the VPN service.

For more information on VPN Extensions Library, see the API reference.

Wi-Fi Service Library


  • Wi-Fi hotspot aggregator capabilities
    • You can create hotspot aggregator applications that manage authentication to a Wi-Fi hotspot.

For more information on the Wi-Fi Service Library, see the API reference.

Back to Top


Changes in this release

Cascades | Core

Cascades upgrade guide


We also have an upgrade guide available that can help you transition your apps to the 10.2 Gold release version for BlackBerry 10. Check out the upgrade guide here.

Behavior changes


Payment Service

The Payment Service has been updated to use sheets (instead of dialog boxes) for the purchase flow of digital goods and applications. To minimize the number of requests to the Payment Service, requestExistingPurchases(false) now requests existing purchases from the BlackBerry World client cache. If the client cache is invalid, existing purchases are retrieved from the BlackBerry World server.

For more information about using the Payment Service, see Payment Service.

Sheet behaviour

Cards and sheets now slide in from the right side of the screen. For more information, see the UI guidelines for Cards and Sheets.

For more information about creating cards, see Cards.

Bluetooth

If your app makes calls to QBluetoothLocalDevice::address(), you must enable the read_device_identifying_information permission in your app’s bar-descriptor.xml file. The requirement for this permission will be enforced in a future release. When it is enforced, any calls to QBluetoothLocalDevice::address() without the required permission enabled will fail with an error message.

For more information about setting permissions, see App permissions.

Back to Top


Core | Cascades

Changes to signing your apps


In this release, the way that you sign your apps (to prepare them for distribution in the BlackBerry World storefront) has changed. Previously, you used code signing keys that you obtained from BlackBerry to sign your apps. Now, you use a BlackBerry ID token that's associated with your BlackBerry ID.

To learn how to sign your apps using this new process, see Signing apps.

BlackBerry Platform Services Library


navigator.h

Deprecated navigator_open_file(). Use the invocation framework APIs from navigator_invoke.h instead.

Bluetooth Library


btgatt.h

Deprecated the following definitions:

  • GATT_TIME_INFINITY
  • GATT_UUID_STRING_LENGTH
  • GATT_CLIENT_CHAR_CFG_UUID
  • GATT_CHARACTERISTIC_PROP_BROADCAST
  • GATT_CHARACTERISTIC_PROP_READ
  • GATT_CHARACTERISTIC_PROP_WRITE_NORESP
  • GATT_CHARACTERISTIC_PROP_WRITE
  • GATT_CHARACTERISTIC_PROP_NOTIFY
  • GATT_CHARACTERISTIC_PROP_INDICATE
  • GATT_CHARACTERISTIC_PROP_WRITE_SIGNED
  • GATT_CHARACTERISTIC_PROP_EXT_PROP

btdevice.h

If your app calls bt_ldev_get_address(), in the Application tab of the bar-descriptor.xml file of your app, you must enable the read_device_identifying_information permission. This requirement will be enforced in a future release. When it is enforced, any calls to bt_ldev_get_address() without the required permission will fail with an error message.

For more information on the Bluetooth Library, see the API reference.

Camera Library


camera_api.h

The following functions and data type were incorrectly included in the header file and should not be used.

  • camera_get_supported_video_vf_modes()
  • camera_get_video_vf_mode()
  • camera_set_video_vf_mode()
  • camera_video_vf_modes_t

For more information on the Camera Library, see the API reference.

Geofencing Library


The default monitoring mode for regions is now transient. Previously, the default monitoring mode was permanent.

The following functions were removed and replaced by new functions:

  • geomonitor_region_get_stop_monitoring_event(), which replaces geomonitor_region_get_delete_on_event()
  • geomonitor_region_get_foreground_mode(), which replaces geomonitor_region_get_stop_monitoring_event()
  • geomonitor_region_get_offline_notification_target(), which replaces geomonitor_region_get_notification_invoke_target() and geomonitor_region_get_notification_message()
  • geomonitor_region_set_delete_on_event(), which replaces geomonitor_region_set_stop_monitoring_event()
  • geomonitor_region_set_foreground_mode(), which replaces geomonitor_region_set_monitoring_mode()
  • geomonitor_region_set_offline_notification_target(), which replaces geomonitor_region_set_notification_invoke_target() and geomonitor_region_set_notification_message()

Added the following data type and functions:

  • geomonitor_monitoring_mode_t
  • geomonitor_region_get_monitoring_mode()
  • geomonitor_region_get_notification_invoke_target()
  • geomonitor_region_get_notification_message()
  • geomonitor_region_get_stop_monitoring_event()
  • geomonitor_region_set_monitoring_mode()
  • geomonitor_region_set_notification_invoke_target()
  • geomonitor_region_set_notification_message()
  • geomonitor_region_set_stop_monitoring_event()

For more information on the Geofencing Library, see the API reference.

Headless apps


We've made some changes and additions to the documentation for headless apps. There's now more information about notifications and interprocess communication (IPC), as well as a few more sample apps. We've also restructured the step-by-step approach for creating a headless app to be more complete and easier to follow.

For more information on headless apps, see documentation.

Scoreloop SDK


scui_client.h

Deprecated the following functions:

  • SCUI_Client_New()
  • SCUI_Client_ShowFavoriteGamesView()

For more information on the Scoreloop SDK, see the documentation.

Back to Top


Fixed in this release

Cascades | Core

BBM Social platform


JI: 389390

Images that use transparency might not appear correctly in the user's list of BBM applications.

Camera


JI: 513997

The acl_to_text() and acl_from_text() functions were not safe to use in multithreaded programs.

Cascades platform APIs


JI: 530905

When using the SMS transport API, you could not register other app's headless target ID.

JI: 530877

When using the SMS service you could not register apps with the service.

JI: 514461

The WiFiDirect networkInterfaceName() and networkSsid() functions were returning empty strings instead of the network interface name or the network SSID as expected.

JI: 508754

When a headless app's UI was registered with a port, an SMS trigger for the headless app was bringing a UI into the foreground.

JI: -

When you had an app with paid digital items listed on the BlackBerry World storefront, each time you called the requestPrice() function, a response was required before sending the next request. Calling requestPrice() multiple times without waiting for a response would result in a PriceReply error.

JI: 482561

Currently, when implementing a headless app, you can invoke notification dialogs using the Notification dialog functions of the Dialog API. Global dialogs are not encouraged as they are disruptive to the user experience.

JI: 479013

If your app was in the enterprise space, the sms trigger did not invoke the app because the default is to invoke the app in the personal perimeter. Since the app is not there, nothing was invoked.

JI: 478856

Applications installed in the enterprise perimeter could not be invoked by the Geomonitor service. Invocation was defaulting to the personal perimeter and not enterprise.

JI: 477520

If you had a GeoLocation with a radius greater than 0, only the marker was rendered, not the radius circle.

JI: 475866

If you didn't register your signing key and your PlayBook debug token with the same clientID, an error would be thrown when trying to link your BlackBerry ID account with a Signing Authority account.

JI: 469847

Headless apps didn't receive SMS triggers from the invocation framework.

JI: 469844

If you were running a headless app, the bb.action.system.STARTED invoke trigger was not sent after a device restart.

JI: 468274

When you had an app with paid digital items listed on the BlackBerry World storefront and called the requestPrice() function, both a valid SKU value and a valid ID number were required in order to retrieve the price. However, the documentation states that only one of the ID or SKU was required in order to retrieve the price.

JI: 467743

Components that derive from CustomControl did not display accessibility warnings correctly.

JI: 461671

Invoked headless apps were displaying an incorrect StartUpMode. The value is set to ApplicationStartupMode.

JI: 461658

C++ Invocation Framework and Menu Service did not have an enum type for Headless Application.

JI: 461484

Headless apps can display UI messages.

JI: 460515

Headless apps couldn't invoke services using the invocation framework.

JI: 458228

Headless apps sometimes terminated due to an app connection timeout.

JI: 457641

If you peeked into another window, which brings up the previous and next cards, the application could at times crash.

JI: 456191

When a mode change occured, the service only sent and updated by stating the new mode, and did not send an update regarding the new policies for other settings that had changed due to the cascading effect of the mode change.

JI: 455645

Visually disabled items were getting highlighted when ListSelectionIndicator was set to highlight on SystemListDialog.

JI: 448858

Compiling a project with an mkbuild in command prompt occasionally resulted in a BundleException and SWTException.

JI: 446246

If you changed the card orientation several times, your app might crash.

JI: 439755

The checkWord() and suggestion() functions of SpellChecker sometimes returned false with correctly spelled words due to timing out.

JI: 422741

Sometimes the processStateChanged() signal from Application was not being emitted.

JI: 403426

When you were using the BlackBerry 10 Simulator in Z10 mode, the isPhysicalKeyboardDevice() function returned true, even though it should have returned false.

JI: 403361

The PaymentErrorCode class sometimes wouldn't work properly in QML, and cited an error at run-time.

JI: 403360

When using the PurchaseReply class, the finished() signal didn't return true, even after the purchase was made and the onPurchaseFinished() slot function was run.

JI: 403297

The ProcessState API documentation didn't contain enough information on the difference between background and stopping Type enumerations.

JI: 395891

In the SpellChecker API, the checkWord() function sometimes returned true, even if the word was misspelled. Invoking word suggestions didn't return any results.

JI: 391372

Using the Screenshot API, the capture() function didn't display a permission requirement message, and failed with the error citing permission denied.

JI: 390733

When a DisplayInfo object was set to the primary display, then the display name was obtained, sometimes the display name returned as an empty string.

JI: 385110

Headless apps have heap usage limit based on permissions set.

JI: 384752

When you tried to pair using Bluetooth, there was a potential risk for out-of-band (OOB) pairing to fail.

JI: 384560

When you tried to create a Bluetooth connection, there was a potential risk for a low energy (LE) connection to fail.

JI: 384067

In the SdCardInfo class, the state() and activity() functions didn't return proper values when a valid SD card was inserted, instead an unknown state was returned.

JI: 381840

The BarcodeDetectorVisuals class was missing an API reference. Also, the return value of detected() in the BarcodeDetector class was just void.

JI: 381331

The API reference for resetEmoticonsEnabled() of the SystemCredentialsPrompt class said the function resets the main text of the dialog box to QString::null. However, the function actually reset the emoticonsEnabled property back to the default value of false.

JI: 380460

An unbound invocation query may have caused some invocation targets to appear twice in the menu. This issue also relates to 7215861 and 7301535.

JI: 377462

When an SMS URI was typed, "Call" was an option in the context menu.

JI: 377457

When a parent app invoked a Camera card, then the parent app disabled the camera use, the camera was still usable.

JI: 377105

If an application has an invoke filter containing an asterisk (*), the application failed to install, showing a failure 884.

JI: 376907

If invocation requests were pending, sometimes peeking and closing a card didn't work.

JI: 372499

Sometimes when signing a BAR file, the content of the manifest .mf file and your Invoke-Target-Filter URI was altered, and your application failed to deploy properly.

JI: 328831

You could not build a project from the command line on a Mac.

JI: 239539

Sometimes when you purchased non-consumable items more than once, no error message was displayed, even if the payment didn't go through.

JI: 239425

If there are no list items in the SystemListDialog class, the confirmButton function couldn't be enabled.

JI: 239261

The API documentation for the Application.pooling() signal needed improvement. The app needed to be closed to trigger the pooling feature and pooling() signal. In the pooling() slot function, the handler, or somewhere after the pooling() signal was emitted, the app must call poolingCompleted(). If not, the app would be terminated in the normal way. In order to properly have pooling working, the app must have been deployed using the 'BlackBerry-deploy' command line program. Pooling would not work if you ran your app from the Momentics IDE for BlackBerry using the 'Run as' option.

JI: 211495

When a DisplayInfo object was set to the primary display, then the display name was obtained, sometimes the display name didn't appear as expected.

JI: 196351

When you used the HardwareInfo class to query for device information, the modelName() function returned the incorrect model name.

JI: 149715

The API documentation for MenuItemInvokeParams.fileTransferMode() states that the file transfer mode will be applied if the scheme of the URI is "file:///". It also notes that the third forward slash represents the file path.

JI: 138301

Sometimes when texting two numbers separated by a comma, the message was only sent to the first number.

Cascades Exporter plug-in for Adobe Photoshop


JI: 393831

Using Cascades Exporter with Windows 8 and CS6 may have failed when exporting text layers.

Back to Top


Core | Cascades

Active Frames


JI: 477424

The size of Active Frames was 310 x 396 for devices with a 720 x 1280 screen resolution. Now, for devices with this screen resolution, the size of Active Frames is 319 x 437. It was recommended that you create assets and text for Active Frames that support the 319 x 437 size. This may have caused your Active Frame to look distorted when developing for the 10.2.0.1443 release and earlier but it will now appear as expected.

BlackBerry Platform Services


JI: 391372

Using the Screen capture API, the function screencapture_grab() failed with the error message:
error code 9 - CAMERA_EBADF
error message: Failed to open screencapture control PPS object

Headless apps


JI: 482561

When you implemented a headless app, you could invoke notification dialogs using the Notification dialog functions of the Dialog API. Global dialogs were not encouraged as they were disruptive to the user experience.

JI: 479013

If your app was in the enterprise perimeter, the sms trigger did not invoke the app because the default was to invoke the app in the personal perimeter. Since the app was not there, nothing got invoked.

JI: 478856

Applications installed in the enterprise perimeter couldn't be invoked by the Geomonitor service. Invocation defaulted to the personal perimeter and not enterprise.

JI: 469847

If you sent port-directed SMS messages to an invocation target that was a headless app, the Chat service invoked the target only once and a port-directed SMS trigger was emitted only once, regardless of the number of port-directed messages that were sent.

JI: 469844

If you loaded a headless app on a device, you (correctly) received a System Started trigger. Then, if you restarted the device, you (incorrectly) didn't receive the System Started trigger again.

JI: 461484

Headless apps were erroneously able to post windows, window groups, and dialog requests, which made them non-headless and display a UI.

JI: 461671

When a headless app was invoked, the ApplicationStartUpMode was erroneously listed as LaunchApplication.

JI: 460515

You could not invoke a service from a headless app.

JI: 458228

When a headless app was invoked, and that headless app was not currently running, the headless app launched but was sometimes terminated due to an app connection timeout.

Invocation framework


JI: 380460
JI: 377399

An unbound invocation query may have caused some invocation targets to appear twice in the menu. (See also 345183)

Simulator


JI: 394147

On Mac OS, the simulator controller could not be launched from the simulator installation location.

Back to Top


Known limitations

Cascades | Core

BBM Social Platform


Apps installed in the Work perimeter cannot access the BBM social platform. To connect to BBM, your app must be installed in the Personal perimeter.

When you retrieve the version number of the BBM Social Platform library that is running on a contact's device, the value returned might be unreliable if the device is running BlackBerry 10 OS version 10.2 or later.

QRC-based resources


If you are using QRC to improve performance in your apps, the new asset selection tool may affect your apps. If asset selection is used, an index file is generated automatically. However, this index file does not include contents that are only included in the QRC binary file. Instead, it lists only the files that reside in the assets directory in your project.

Workaround: Place a copy of QRC-compiled assets in your assets directory. The tool will then include these assets in the index file. When the device loads the app, the appropriate files in the binary are still used and the app continues to benefit from the performance gain of QRC.

Viewers in the invocation framework


Using the invocation framework, viewer-related classes (for example, InvokeViewerMessage and InvokeViewerRequest) and functions have been deprecated. The viewer-related classes and functions have been replaced by Card classes and functions. For more information on the Cards API, see the Cards documentation.

Back to Top


Core | Cascades

BBM Social Platform


Apps installed in the Work perimeter cannot access the BBM Social Platform. To connect to BBM, your app must be installed in the Personal perimeter.

When you retrieve the version number of the BBM Social Platform library that is running on a contact's device, the value returned might be unreliable if the device is running BlackBerry 10 OS version 10.2 or later.

BlackBerry ID and Signing Authority linking


If you do not register your signing key and your BlackBerry PlayBook debug token with the same clientID, an error will be thrown when you try to link your BlackBerry ID account with a Signing Authority account. A fix will be available in the next release.

FreeType


Applications using FreeType must add the following include path: $QNX_TARGET/usr/include/freetype2

Multimedia


If an app plays a media stream that's encrypted, the app won't allow video playback if an HDMI display is connected, due to security restrictions. This limitation will be resolved in a subsequent release.

There is a slight delay between tracks played as part of a playlist (approximately 0.5 seconds), even when the playlist includes only one track that is repeating.

OpenAL


  • The OpenAL 1.1 Specification and Reference incorrectly states that the function alcCloseDevice() will fail if the device's contexts and buffers have not been destroyed. alcCloseDevice() actually destroys any contexts and buffers still associated with the device.
  • The function alcGetIntegerv() does not throw an error when retrieving ALC_MAJOR_VERSION and passing an invalid device pointer.
  • The function alcGetString(device, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER) throws an error when invoked after the device has been closed. It should return the default device and ignore the device parameter.
  • The OpenAL 1.1 Specification and Reference incorrectly states in the description of the function alcGetString(), "Specifying NULL for deviceHandle when asking for ALC_EXTENSIONS will generate an ALC_INVALID_DEVICE error." In fact, no error is generated.
  • The OpenAL 1.1 Specification and Reference incorrectly states in the description of the function alBufferData() that, "An invalid size will result in an AL_INVALID_VALUE error." In fact, calling alBufferData() with an invalid size does not cause the INVALID_VALUE error.
  • When the function alcMakeContextCurrent() is called with an uninitialized ALCcontext pointer, it correctly returns ALC_FALSE, but does not generate an ALC_INVALID_CONTEXT error.
  • The OpenAL Programmer's Guide - OpenAL Versions 1.0 and 1.1 incorrectly lists AL_INVALID_VALUE as a possible error returned by the functions alGenBuffers() and alGenSources() when the array is not large enough to hold the number of items requested. In fact, no error is generated.
  • The function alSource3f() does not throw an AL_INVALID_VALUE error when invalid numbers are passed as parameters. Apps should perform their own validity checking.
  • The function alSourcef() throws an AL_INVALID_VALUE error for valid values when using AL_CONE_INNER_ANGLE and AL_CONE_OUTER_ANGLE.
  • No error is thrown when the function alutLoadWAVFile() is called without a current context.
  • The function alutGetError() does not return ALUT_ERROR_ALC_ERROR_ON_ENTRY when there was already an ALC error on entry to alutLoadMemoryFromFileImage().
  • In the OpenAL Programmers Guide, AL_DATA is incorrectly documented as a valid buffer property. An attempt to retrieve this property through alGetBufferi() and alGetBufferiv() will result in an AL_INVALID_ENUM error.
  • The deprecated function alutLoadWAVMemory() does not return the expected values.
  • The function alGetListenerfv() does not generate an error when called with an invalid value. Apps should perform their own validity checking.
  • The following attributes are set by the device, and cannot be altered using the attribute list of the function alcCreateContext(): ALC_FREQUENCY, ALC_REFRESH, ALC_SYNC, ALC_MONO_SOURCES, ALC_STEREO_SOURCES, ALC_MAX_AUXILIARY_SEN.
  • The OpenAL 1.1 Specification and Reference incorrectly states that the function alGetEnumValue() sets the error code AL_INVALID_VALUE if the specified enumeration cannot be found. In fact, this error is not set when an invalid enumeration value is specified.
  • The OpenAL Programmer's Guide - OpenAL Versions 1.0 and 1.1 incorrectly states that the functions alcSuspendContext() and alcProcessContext() produce the error ALC_INVALID_CONTEXT when called with a null or destroyed context. However, no error is generated.
  • The function alListener3f() does not generate an error when called with a NULL value for the AL_VELOCITY attribute. Apps should perform their own validity checking.
  • The function ALCGetProcAddress() does not return addresses for the specified context extension functions, even for valid functions. It always returns NULL.
  • The function alSourceQueueBuffers() queues invalid buffers. If you pass a NULL buffer to this function, it will queue the buffer and not raise an error, even though the buffer is not valid.

OpenSSL


BlackBerry 10 uses OpenSSL 1.0.1, with the following deviations from the standard implementation:

  • TLSv1.1 and TLSv1.2 support is disabled by default.
  • The heartbeat TLS extension has been disabled. This extension is described by RFC 6520, which is located at http://www.rfc-editor.org/rfc/rfc6520.txt.
  • The list of default SSL/TLS/DTLS ciphersuites has been altered.
  • Applications using SSL/TLS/DTLS connections to get a default set of ciphersuites unless they explicitly specify which ciphersuites they want to support using SSL_CTX_set_cipher_list() or SSL_set_cipher_list().
  • The default set of ciphersuites has been changed to "ALL:!aNULL:!eNULL:!SRP:!SSLv2" which eliminates the SRP ciphersuites from the standard default set of ciphersuites provided by OpenSSL 1.0.1.
  • SSL_CTX_new(), which is used to create a new SSL_CTX object for TLS/SSL/DTLS negotiations, has been altered to disable TLSv1.1 and TLSv1.2 support by automatically setting the option SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TSLv1.2.
  • TLSv1.1 and TLSv1.2 will be disabled by default when using SSLv23_method(), SSLv23_server_method(), or SSLv23_client_method(). Applications that need TLSv1.1 support can clear the SSL_OP_NO_TLSv1_1 option by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1_1) or can use one of the following TLSv1.1-only methods: TLSv1_1_method(), TLSv1_1_server_method(), or TLSv1_1_client_method(). Applications that need TLSv1.2 support can clear the SSL_OP_NO_TLSv1_2 option by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1_2) or can use one of the following TLSv1.2-only methods: TLSv1_2_method(), TLSv1_2_server_method(), or TLSv1_2_client_method().

Payment Service


When you use the BlackBerry 10 Device Simulator to test your apps, your apps cannot communicate with the BlackBerry World servers to test certain Payment Service features. To test Payment Service features on the simulator, you should use Local Mode testing.

If you need to test your apps by interacting with the BlackBerry World servers, you need to run the app on a physical device and use a BlackBerry ID in sandbox mode. For more information about testing apps that use the Payment Service, see Testing in-app purchases.

Scoreloop SDK


Social networks are not supported in this Scoreloop release. APIs related to the following classes are unsupported:

  • SC_Message (Partial)
  • SC_Message_Controller (Partial)
  • SC_SocialController (Partial)
  • SC_SocialNetwork (Partial)

For more information on the Scoreloop SDK, see the following resources:

Back to Top


Known issues

Cascades | Core

BBM Social Platform


JI: 389356

When the Connect to BBM permission (Settings > Security and Privacy > Application Permissions)is toggled from enabled to disabled or from disabled to enabled, the registration and permission states are not updated. This issue relates to 6118318.
Workaround: Restart the app if permissions have been modified.

Cascades Exporter plug-in for Adobe Photoshop


JI: 508525

When using Cascades Exporter with an installation of Adobe Photoshop that uses French as the default language, a "Problem null" dialog might be displayed when you export a project, indicating that the export process fails.

Cascades platform APIs


JI: 478389

When you're using a MapView, no useful information is displayed in a location caption dialog for the radius of a Geolocation, radius of a GeoDeviceLocation, a GeoPolygon, or GeoPolyline on that MapView. Subsequently, you cannot interact with a polygon, line, or radius circle.

JI: 468275

Opening a large number of cards can cause the device to become unresponsive.

JI: 466800

The networkOwnerIpAddress() and networkOwnerHardwareAddress() of WiFiDirect return empty strings.

JI: 455682

Cascades maintains the visible and opacity properties of an ActivityIndicator. An ActivityIndicator becomes visible (opacity == 1) when it is running, and it is not visible (opacity == 0) when it is stopped. As a result, you should not read or set the visible and opacity properties of an ActivityIndicator. If you read or set the visible or opacity properties, it can cause unexpected results in your app.

JI: 449197

GeoPolylines and GeoPolygons don't render if they cross 0, 180, or -180 degrees longitude or latitude.

JI: 449189

Dotted and dashed edge styles don't render when you're using GeoDeviceLocation.

JI: 449188

Dotted and dashed edge styles don't render when you're using GeoPolygon.

JI: 449170

If you're using a GeoPolygon, inner boundaries don't render.

JI: 441438

Generating static image maps with MapImageGenerator takes longer than intended.

JI: 393763

Sometimes when editing JavaScript, code completion displays no proposals when there are proposals to display, including on console functions (such as the console.debug() function) or math functions (such as the Math.sin() function). The functions still work at runtime though.

JI: 389904

When reading a URI tag that contains ‘pin’, the BBM application doesn't handle the content of the tag, but the Smart Tags application does and invokes the URI.

JI: 389356

When the Connect to BBM permission (Settings > Security and Privacy > Application Permissions) is toggled from enabled to disabled or from disabled to enabled, the registration and permission states are not updated. This issue relates to 6118318.
Workaround: Restart the app if permissions have been modified.

JI: 381183

Classes that inherit DataModel, such as GroupDataModel, QListDataModel, and XmlDataModel, are missing some description information for implemented superclass functions, such as childCount(), hasChildren(), type(), and data().

JI: 377486

An InvokeTargetFilter allows you to set the MIME type as '*' and register the filter, even if the filter is restricted.

JI: 377476

If you call the InvokeUpdateTargetFiltersRequest.updateTargetFilters() function, a finished() signal is not emitted.

JI: 284877

An established TCP connection over the cellular network interface fails when Wi-Fi is enabled on a device that is initially connected to a mobile network with Wi-Fi disabled.

JI: 196223

On the BlackBerry 10 Device Simulator, if you start the controller from the installation folder and connect it to the simulator, then launch an app, you may not be able to switch the charging state to "charging."

JI: 150783

There is missing documentation on QtNfcSubset classes including some enumerations and constructors in QNdefRecord, QNdefMessage, QNdefNfcSmartPosterRecord, QNdefNfcTextRecord, and QNdefNfcUriRecord.

JI: 149929

When you set a URL property for a QML object, file paths are case-sensitive when they should be case-insensitive. For example, “FILE:app/native/assets/contacts.json” and “file:app/native/assets/contacts.json” should be treated the same, but are not. Also, a URL that’s defined in QML may result in a URL that has part of the path duplicated.

JI: 134626

Progress toasts sometimes time out incorrectly when show() or exec() is called repeatedly.

JI: 84881

When you add a custom URI to an InvokeTargetFilter and then retrieve the list of custom attributes, the size of the custom attribute list is reported as 0. The documentation does not specify that the returned size will be 0.

JI: 86080

On the BlackBerry 10 Device Simulator, if you connect the windowGroupInvisible() and processStateChanged() signals and then minimize the app, neither signal is emitted.

JI: 85749

InvokeRequest.setMetaData() doesn't work correctly if a QByteArray as part of the QVariantMap is passed in.

JI: 85463

When using cards in an app that is run on the BlackBerry 10 Device Simulator, rotating the simulator may cause the UI to become distorted.

Back to Top


Core | Cascades

BBM Social Platform


JI: 389356
JI: 389093

When the Connect to BBM permission (Settings > Security and Privacy > Application Permissions) is toggled from enabled to disabled or from disabled to enabled, the registration and permission states are not updated.
Workaround: Restart the app if permissions have been modified.

Camera


JI: 513997

The acl_to_text() and acl_from_text() functions aren’t safe to use in multithreaded programs.

Documentation


JI: -

The documentation that is embedded in the library header files for the following APIs may not be the most recent:

For the most up-to-date documentation, refer to the online documentation for each library.

JI: -

We are hard at work creating an awesome UI experience for you! While we are doing this, some references to the BlackBerry 10 UI, including screenshots, may not reflect what you see in the current software.

JI: -

In previous releases, the most recent version of the BlackBerry Platform Services library (libbps) was bundled with the Native SDK. This version was newer than the version on the target OS. To ensure the correct BPS library version was used by applications at run-time, projects in the Native SDK 1.0 would:
- Use BPS headers from the $QNX_TARGET/../target-override location for compilation,
- Link the libbps.so from the $QNX_TARGET/../target-override location to generate the application executable, and
- Package the libbps.so from the $QNX_TARGET/../target-override location in the BAR.

JI: -

As of the Native SDK 2.0.0 release, BPS no longer resides in the target-override location. The BlackBerry 10 OS and BlackBerry 10 Native SDK versions of this library are in sync. If you have applications targeting BlackBerry 10 that you no longer want to support on PlayBook 1.0.x, you should remove the libbps.so.1 asset from bar-descriptor.xml and target the BlackBerry 10 version of the Native SDK. To verify, select the QNX page in the project properties dialog. Otherwise, packaging of the BAR file will fail because it will not be able to find the libbps.so file to include in the BAR.

JI: 617429

In the Security Builder Crypto Library documentation, the functions described for huecpvs.h and huecspeke.h are not available.

JI: 492681

In the Camera API Library offline documentation, the following functions and data type should not have been included:

  • camera_get_supported_video_vf_modes()
  • camera_get_video_vf_mode()
  • camera_set_video_vf_mode()
  • camera_video_vf_modes_t

Headless applications


JI: 515411

When using the Headless template, if the headless app project name is greater than 18 characters, the name of the generated entry point will exceed its maximum 25 character limit and create an error. If you want a project name that is longer than 18 characters, you need to rename the entry point of your service.

JI: 461658

Currently, the category type for headless apps is incorrectly returned as "service". In the future, the correct type will be returned.

Installation


JI: 402296

When installing on Windows XP, you must specify a different installation location, instead of using the default location. The folder name must not contain spaces.

JI: 402276

When you run the BlackBerry Native SDK installer on Windows 8, you cannot create a shortcut in the Start menu.
Workaround: You can use options in the installer to create shortcuts on the Desktop and the Quick Launch bar.

JI: 402240

On Linux systems, if the launch command contains "..", the Native SDK installer fails.

JI: 402236

You might get a warning after uninstalling the Native SDK that some directories couldn't be removed. This can be ignored.

JI: 394200

When you perform a software update, you must accept the security warning about installing unsigned software, and continue the installation.

Invocation framework


JI: 389904

When reading a URI tag that contains ‘pin’, the BBM application doesn't handle the content of the tag, but the Smart Tags application does and invokes the URI.

OpenAL


JI: 403249

When using OpenAL to play sound on the device and an HDMI cable is plugged in, the sound does not transfer on to the connected device.

JI: 403231

You cannot create two contexts with different attributes by calling alcCreateContext(). Errors are produced after attempting to create the second context, you can no longer call alcOpenDevice(), and sound is no longer playable in other OpenAL apps.

Scoreloop SDK


JI: -

On occasion, when you are running the Setup Wizard for the first time either directly from the Games app or using a 3rd party game, when you click the Let’s Play button on the last page of the wizard, the Games app might close unexpectedly. This does not affect the Setup, and the Games app or the 3rd party game works normally when started again.

JI: 469817

You can't set a profile picture on the edit profile page of the Games app.

Back to Top


Core

Native SDK 10.2 Release Notes

Native SDK 10.1 Release Notes

Native SDK 10.0 Release Notes

Back to Top


Last modified: April 22, 2014