Would you like to tell us how we are doing?

You bet No thanks

Sorry about the red box, but we really need you to update your browser. Read this excellent article if you're wondering why we are no longer supporting this browser version. Go to Browse Happy for browser suggestions and how to update.

Push Service SDK Release Notes

New in this release

Setup application

  • The Push Service SDK setup application runs in graphical mode by default for both the Windows and Linux platforms. If the setup application is unable to run in graphical mode, it switches to console mode. A command line switch is avilable to force console mode. Separate setup applications for console mode are no longer available.
  • An installation option is available to configure the SDK so that the sample and helper applications use system memory instead of a database. Installing and using the SDK in memory mode is suggested for testing purposes only.
  • The setup application creates two separate folders in the SDK installation location, one containing the components that provide low-level APIs and the other containing the components that provide high-level APIs.
  • An installation option is available to configure the SDK so that the sample and helper applications can use both the Push Service and the BlackBerry MDS Connection Service(a component of the BlackBerry Enterprise Server) simultaneously to deliver content.
  • The version of Apache Tomcat that the setup application installs in the Distribution+Tomcat option is updated to version 6.0.32 (from version 6.0.20).
  • If the setup application detects that the previous version of the Push Service SDK (version 1.0.1.11) is installed on the computer, it prompts to upgrade the database used with the previous version to make it compatible with the new version of the SDK (version 1.1.0.16). During the installation process the migration scripts run in the background to complete the database upgrade. The setup application does not upgrade any other components of the SDK (for example, the server-side library components, configuration files, or third-party components).

Configuration files

  • In the PushSDK.properties file, the following new properties are available:

    • dao.type
    • dtd.declaration.public
    • dtd.declaration.enterprise
    • public.ppg.address
    • enterprise.ppg.address
    • acknowledgement.push.lookup.retry.delay

    The following properties are no longer supported:

    • use.public.push
    • ppg.address
  • All the XML configuration files of the Spring beans are updated to support data storage in system memory (as an alternative to using a database).

Database scripts

In the database-scripts folder, in the mysql and oracle subfolders, database migration scripts are available for you to migrate your database from earlier versions of the Push Service SDK to version 1.1.0.16. The migration scripts automates the task of migrating the Push Service SDK database for the following upgrade scenarios:
  • From version 1.0.0.5 to version 1.1.0.16.
  • From version 1.0.1.11 to version 1.1.0.16.

Sample Push Initiator

  • The sample Push Initiator is now able to use the Push Service and BlackBerry MDS Connection Service (of the BlackBerry Enterprise Server) simultaneously to deliver content to push-enabled applications.
  • The newly added configuration properties in the sample-push-initiator.properties file enables you to specify a type for the sample Push Initiator (public, enterprise, public and enterprise) and also specify credentials for it.
  • To improve readability of source code of the SampleApplication class, the code related to submitting push request messages has been refactored using the Command pattern (design pattern). The source code related to submitting push request messages is now located in the newly added push subpackage.

Helper applications: DebugPortal

  • The source code is now available for viewing.
  • A new menu requires you to specify the type of the Push Initiator when adding a push-enabled application.
  • The page that lists the push-enabled applications now includes a new column to indicate the type of the Push Initiators and also allows you to change the type.
  • The page that displays query result about the subscribers as well as the page with details of each individual subscriber now includes information about the subscriber type.
  • Before you can submit push request messages, the DebugPortal takes you to a page with a new menu from which you must select a push-enabled application.
  • The default start page now changes based on whether a push-enabled application has been added or not. If no push-enabled application has been added yet, the start page defaults to the page where you can add push-enabled applications. If a push-enabled application has been added already, the start page defaults to the page with the new menu from which you select the push-enabled application that you want to deliver content to.

Server-side library components

Commons component

The newly added Constants class has the PUSH_ALL field that replaces the PUSH_ALL field in the control.AddressList class of the PAP component.

In the PushSDKProperties interface and the PushSDKPropertiesImpl class, the following functional changes have been made.

  • The setUsingXmlParserDtdValidation(boolean) and isUsingXmlParserDtdValidation() methods are deprecated.
  • The setPpgAddress(String) method is deprecated and replaced with the setPublicPpgAddress(String) and setEnterprisePpgAddress(String) methods. Similarly, the getPpgAddress() method is deprecated and replaced with the getPublicPpgAddress() and getEnterprisePpgAddress() methods.

PAP component

In the control subpackage, in the AddressList class, the PUSH_ALL field is deprecated and replaced with the PUSH_ALL field in the commons.Constants class of the Commons component.

In the <*>MessageControl classes (for example, PushMessageControl), the following functional changes have been made:

  • The default constructor is deprecated and replaced with a parameterized constructor that takes a boolean argument.
  • The setAddresses(AddressList) and AddressList getAddresses() methods are deprecated. They are replaced respectively with the setAddressList(List<String>) and List<String> getAddressList() methods.

Core component

This section lists functional changes in the push, pushappmgmt, and subscription packages of the Core-pushsdk component.

push package

  • The newly added FailedPushResult class represents the result of a push request to a subscriber ID in a push request message, when a PPG rejects the push request message or a PPG fails to validate or process the push request message.
  • In the PushResult class, the setFailedPushResults(Set<FailedPushResult>) and the Set<FailedPushResult> getFailedPushResults() methods are available (to set and get the value of the new field that holds a set of FailedPushResult objects).
  • In the PushOutcome class, the boolean isApplicationReliable() method is deprecated and replaced with the Boolean isAppReliable() method to allow a null return value when application-level reliability is unknown.

In the request subpackage the following functional changes have been made:

  • In the PushRequestDetail class, the setSubscriberType(SubscriberType) and SubscriberType getSubscriberType() methods are available (to set and get the value of the new field that holds the subscriber type, represented by an enum constant of the SubscriberType enum).
  • In the PushRequest class, the field that holds StatusCode and the field that holds description of StatusCode are no longer supported. So the setStatusCode(StatusCode) and StatusCode getStatusCode() methods as well as the setStatusDesc(String) and String getStatusDesc() methods are deprecated.

    Similarly, in the PushRequestMemoryDAOImpl and PushRequestRDBMSDAOImpl classes, the updatePushRequest(PushRequest) and List<PushRequest> findByStatusCode(StatusCode) methods are deprecated.

  • In the PushRequest class, the setNotifyUrl(String) method is deprecated and replaced with the setPublicNotifyUrl(String) and setEnterpriseNotifyUrl(String) methods.

    Similarly, the String getNotifyUrl() method is deprecated and replaced with the String getPublicNotifyUrl() and String getEnterpriseNotifyUrl() methods.

pushappmgmt package

The newly added enum PushApplicationType has enum constants to represent the different types of Push Initiators (public, enterprise, public and enterprise).

In the PushApplication class, the following functional changes have been made:
  • The setConsecutiveFailedPushThreshold(Integer) and Integer getConsecutiveFailedPushThreshold() methods are no longer available.
  • The setPassword(String) method is deprecated and replaced with the setPublicPassword(String) and setEnterprisePassword(String) methods.

    Similarly, the String getPassword() method is deprecated and replaced with the String getPublicPassword() and String getEnterprisePassword() methods.

  • The setNotifyUrl(String) method is deprecated and replaced with the setPublicNotifyUrl(String) and setEnterpriseNotifyUrl(String) methods.

    Similarly, the String getNotifyUrl() method is deprecated and replaced with the String getPublicNotifyUrl() and String getEnterpriseNotifyUrl() methods.

In the PushApplicationService interface and the PushApplicationServiceImpl class, the following functional changes have been made.
  • The updatePushApplication(PushApplication) method has been updated to allow updating the status of a push-enabled application.
  • The changePushApplicationCredentials method is deprecated and replaced with the changePushApplicationPublicCredentials and changePushApplicationEnterpriseCredentials methods.
  • The newly added changePushApplicationTypeFromEnterpriseToPublicAndEnterprise, changePushApplicationTypeFromPublicToPublicAndEnterprise, and the List<PushApplication> findByType(PushApplicationType) methods are available.

subscription package

  • The newly added enum SubscriberType has enum constants to represent the different types of subscribers (public, enterprise).
  • In the SubscriberPartial class, the newly added type field and the associated setType(SubscriberType) and getType() methods support the new enum SubscriberType.
  • In the SubscriptionService interface and the SubscriptionServiceImpl class, the syncSubscribersWithPPG(String, String) and syncSubscribersWithPPGByStatus(String, SubscriberStatus, String) methods are deprecated and replaced with the syncSubscribersWithPPGForStatus(String, SubscriberStatus, int, int, String) method.
In the SubscriptionService interface and the SubscriptionServiceImpl class as well as the SubscriptionDAO interface and the SubMemoryDAOImpl and SubRDBMSDAOImpl classes, the following new methods are available:
  • The List<SubscriberPartial> findByAppIdAndType(String pushApplicationId, SubscriberType type, int startIndex, int endIndex) method finds a list of subscribers with the specified push-enabled application ID and type of the subscribers.
  • The int getSizeByAppIdAndType(String pushApplicationId, SubscriberType type) method gets a count of all the subscribers in the storage with the specified push-enabled application ID and type of the subscribers.
  • The List<SubscriberPartial> findByAppIdAndTypeAndStatus(String pushApplicationId, SubscriberType type, SubscriberStatus status, int startIndex, int endIndex) method finds a list of subscribers with the specified push-enabled application ID, type of the subscribers, and status of the subscribers.
  • The int getSizeByAppIdAndTypeAndStatus(String pushApplicationId, SubscriberType type, SubscriberStatus status) method gets a count of all the subscribers in the storage with the specified push-enabled application ID, type of the subscribers, and status of the subscribers.
In the web subpackage, the following new items are available.
  • In the UnsubscribeRequest class, the newly added boolean isNotifyPPG() method enables you to specify if the Push Service SDK should be notified of the unsubscribe request.
  • In the enum SubscriptionStatusCode, the newly added enum constant INVALID_TYPE indicates when the type of a subscriber is not available (null or empty).

Fixed issues

This section lists fixed issues for Push Service SDK 1.1.0.16.

Item

If you tried to subscribe a BlackBerry device user with a subscriber ID that is longer than 42 characters, or the subscriber ID was null or empty (because the user authentication process did not return the subscriber ID), or the subscriber ID was equivalent to the reserved keyword PUSH_ALL, the subscription failed and you received the status code "rc=10020". Previously the API reference related this status code to "The subscriber id specified is null or empty" only. Now the updated API reference lists all the possible reasons (as stated above) for receiving this status code. (755827)

The message list now displays correctly on the BlackBerry Storm2 Series devices and BlackBerry Torch 9800 devices. (456898)

In the DebugPortal helper application, if an application ID for a push-enabled application contains a quotation mark ("), now the push-enabled application can be enabled or disabled. (729174)

Known issues

This section lists known issues for the Push Service SDK 1.1.0.16.

Issue

Workaround

If you install Apache Tomcat on a Windows operating system platform using the Push Service SDK setup application (Distribution+Tomcat option) and specify an installation path that includes spaces, when you use the sample Push Initiator to subscribe a BlackBerry device user, you receive an rc=10026 error.

Impact: You are not able to subscribe a user using the sample Push Initiator.

Specify an installation path that does not include spaces or accept the default location provided by the setup application.