Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

BlackBerry Android Push Message Server

I'mm having problems when trying to push notifications for my Z10. The device successfully registers for push notifications and I receive the BlackBerry generated registration ID as described in "Creating Push-Enabled Android Apps".

I am having problems though when trying to send notifications to that server.

For regular Android I was using a GCM server library. I had to modify it so that the message is sent to BlackBerry servers i.e. https://cpXXX.pushapi.eval.blackberry.com where XXX is my CPID (Content Provider ID).

The problem is that I receive a 404 in return and don't know what's causing that... Any ideas? the same message gets sent to a regular Android device successfully...

Alternatively, did anyone succeed in sending push messages to your device and if so, could you share how the request should look like?

like image 327
Piotr Zawadzki Avatar asked Jun 29 '26 18:06

Piotr Zawadzki


1 Answers

Finally, I was able to make a push request. You have to push it to BlackBerry servers. I used BB SDK available here. The URL you have to use should look like this:

https://cpXXX.pushapi.eval.blackberry.com/mss/PD_pushRequest

sample code:

IdGenerator idGenerator = new IdGeneratorImpl();

        List<String> addresses = new ArrayList<String>();

        JSONObject message = new JSONObject();
        //populate message with key-value pairs
        String data = message.toString();
        //populate addresses with device PINs

        PushMessageControl pushMessageControl = new PushMessageControl(PPGType.PUBLIC_PUSH, idGenerator, "[ YOUR BlackBerryAppId]", addresses);

        Content content = new TextContent(data, "UTF-8");

        PapService papService = new PapServiceImpl();

        PushSDKProperties properties = new PushSDKPropertiesImpl();
        properties.setPublicPpgAddress("[YOUR BLACKBERRY PPG ADDRESS]");
        properties.setParserSpecialCharacters(BLACKBERRY_PARSER_SPECIAL_CHARACTERS);
        properties.setHttpIsPersistent(false);
        properties.setHttpConnectionTimeout(BLACKBERRY_CONNECTION_TIMEOUT);
        properties.setDtdDeclarationPublic(BLACKBERRY_DTD_DECLARATION_PUBLIC);
        properties.setHttpReadTimeout(BLACKBERRY_READ_TIMEOUT);

        HttpClientImpl client = new HttpClientImpl();
        client.setPushSDKProperties(properties);
        papService.setHttpClient(client);
        papService.setPushSDKProperties(properties);

        PushResponse response = papService.push("[ YOUR BlackBerryAppId]", "[ YOUR BlackBerryPassword]", "[ YOUR BlackBerryAppId]", pushMessageControl, content);

where

private static final int BLACKBERRY_READ_TIMEOUT = 120000;

private static final int BLACKBERRY_CONNECTION_TIMEOUT = 60000;

private static final char[] BLACKBERRY_PARSER_SPECIAL_CHARACTERS = new char[] {'&', '"', ':', '<'};

private static final String BLACKBERRY_DTD_DECLARATION_PUBLIC = "<!DOCTYPE pap PUBLIC \"-//WAPFORUM//DTD PAP 2.1//EN\" \"http://www.openmobilealliance.org/tech/DTD/pap_2.1.dtd\">";
like image 69
Piotr Zawadzki Avatar answered Jul 02 '26 00:07

Piotr Zawadzki



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!