Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

BlackBerry Push Development

Reply
Trusted Contributor
icecappacino
Posts: 152
Registered: ‎02-12-2011
My Device: Not Specified

Push Essentials Sample code needed

How do you perform a BIS push request?

Please use plain text.
Developer
shnuffy
Posts: 268
Registered: ‎08-19-2009
My Device: Bold 9700

Re: Push Essentials Sample code needed

You should really only ask this once, I've seen three or four threads. 

Here is how to send a push in PHP (update URLs/AppIDs and password respectively)

 

<?php
if ($_POST) {
    // APP ID provided by RIM
    $appid = [YOUR APP ID]; 

    // Password provided by RIM
    $password = [YOUR RIM PROVIDED PASSWORD];
    
    //Deliver before timestamp
    $deliverbefore = gmdate('Y-m-d\TH:i:s\Z', strtotime('+5 minutes'));
    
    //An array of address must be in PIN format or "push_all"
    $addresstosendto[] = $_POST['pin']; // PIN TAKEN FROM FORM
    
    $addresses = '';
    foreach ($addresstosendto as $value) {
        $addresses .= '<address address-value="' . $value . '"/>';
    }
    
    // create a new cURL resource
    $err = false;
    $ch = curl_init();
    $messageid = microtime(true);

    $data = '--mPsbVQo0a68eIL3OAxnm'. "\r\n" .
    'Content-Type: application/xml; charset=UTF-8' . "\r\n\r\n" .
    '<?xml version="1.0"?>
    <!DOCTYPE pap PUBLIC "-//WAPFORUM//DTD PAP 2.1//EN" "http://www.openmobilealliance.org/tech/DTD/pap_2.1.dtd">
    <pap>
    <push-message push-id="' . $messageid . '" deliver-before-timestamp="' . $deliverbefore . '" source-reference="' . $appid . '">'
    . $addresses .
    '<quality-of-service delivery-method="unconfirmed"/>
    </push-message>
    </pap>' . "\r\n" .
    '--mPsbVQo0a68eIL3OAxnm' . "\r\n" .
    'Content-Type: text/plain' . "\r\n" .
    'Push-Message-ID: ' . $messageid . "\r\n\r\n" .
    stripslashes($_POST['message']) . "\r\n" .
    '--mPsbVQo0a68eIL3OAxnm--' . "\n\r";

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, "https://[RIM PUSH SERVER]/mss/PD_pushRequest");
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_USERAGENT, "BB Push Server/1.0");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, $appid . ':' . $password);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/related; boundary=mPsbVQo0a68eIL3OAxnm; type=application/xml", "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2", "Connection: keep-alive"));

    // grab URL and pass it to the browser
    $xmldata = curl_exec($ch);
    
    // close cURL resource, and free up system resources
    curl_close($ch);
    
    //Start parsing response into XML data that we can read and output
    $p = xml_parser_create();
    xml_parse_into_struct($p, $xmldata, $vals);
    $errorcode = xml_get_error_code($p);
    if ($errorcode > 0) {
        $err = true;
    }
    xml_parser_free($p);

    echo 'Our PUSH-ID: ' . $messageid . "<br \>\n";
    if (!$err && $vals[1]['tag'] == 'PUSH-RESPONSE') {
        echo 'PUSH-ID: ' . $vals[1]['attributes']['PUSH-ID'] . "<br \>\n";
        echo 'REPLY-TIME: ' . $vals[1]['attributes']['REPLY-TIME'] . "<br \>\n";
        echo 'Response CODE: ' . $vals[2]['attributes']['CODE'] . "<br \>\n";
        echo 'Response DESC: ' . $vals[2]['attributes']['DESC'] . "<br \> \n";
    } elseif ($err) {
        echo '<p>An XML parser error has occured</p>' . "\n";
        echo '<pre>' . xml_error_string($errorcode) ."</pre>\n";
        echo '<p>Response</p>' . "\n";
        echo '<pre>' . $xmldata . '</pre>' . "\n";
    } else {
        echo '<p>An error has occured</p>' . "\n";
        echo 'Error CODE: ' . $vals[1]['attributes']['CODE'] . "<br \>\n";
        echo 'Error DESC: ' . $vals[1]['attributes']['DESC'] . "<br \>\n";
    }
} else {
    showhtml();
}

function showhtml() {
    ?>
<html>
<head><title>Blackberry Push</title></head>
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
<p>Message to push:</p>
<textarea name="message" rows="5" cols="50"></textarea>
<input name="pin" value='FF0000'></input>
<p></p><input type="submit" value="Push Data"></p>
</form>
</body>
</html>
<?php
}
?>

 

Please use plain text.
New Developer
UserNeo
Posts: 74
Registered: ‎10-23-2008
My Device: 9000

Re: Push Essentials Sample code needed

Hi shnuffy, this look like really cool and easy,how i get the AppID & the password? cu UserNeo
Please use plain text.
New Developer
haricharan
Posts: 6
Registered: ‎12-18-2011
My Device: BlackBerry Torch 9800, BlackBerry PlayBook
My Carrier: AT&T

Re: Push Essentials Sample code needed

UserNeo - you got to register your application here to get the AppID and password.

 

https://www.blackberry.com/profile/?eventId=8121

Please use plain text.