Monthly Archives: November 2011

WebWorks Push Application

Gerade die “Push” Funktionalität von RIM funktioniert wunderbar und schont den Akku der Clients. Seit dem SDK 2.1 gibt es Änderungen in der API für WebWorks Anwendungen und deswegen möchte ich ein kleines Beispiel veröffentlichen um Push Nachrichten zu empfangen. Der Code umfasst nur die Applikation für den Blackberry – nicht um einen Push an RIM zu senden.

Die neue API macht es einem viel einfacher, weil man nicht mehr verschiedene XMLRequests machen muss. Außerdem kann man endlich von jeder IP auf die Testserver zugreifen und muss nicht eine freischalten. Trotzdem muss man sich für die “Push Essentials” noch registrieren und bekommt einen Port und Id für die App zugewiesen. Die Dokumentation wird auch immer besser…

index.html

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<meta name=”viewport” content=”width=device-width,height=device-height,user-scalable=no,initial-scale=1.0″>
<script type=”text/javascript” src=”js/action.js”></script>
<body style=”margin: 0em; padding: 0em; border-style: none; background:white;”>
<button id=”Register” onclick=”openBISPushListener();”>openBISPushListener</button><br>
<button id=”De-Register” onclick=”cancelSubscription();”>cancelSubscription</button><br>
<div id=”resultDiv”></div>
</body>
</html>

action.js

var port = YOURPORT;
var serverUrl = “http://pushapi.eval.blackberry.com”;
var appId = “YOURAPPID”;
var max = 100;
var wakeUpPage = “index.html”;

function cancelSubscription() {
blackberry.push.closePushListener();
}

function openBISPushListener() {
try {
var ops = {port : port, appId : appId, serverUrl : serverUrl, wakeUpPage : wakeUpPage, maxQueueCap : max};
blackberry.push.openBISPushListener(ops, onData, onRegister, onSimChange);
}
catch (err) {
alert(err);
}
}

function onRegister(status) {
if (status == 0) {
alert(“success”);
}
else if (status == 1) {
alert(“network error”);
}
else if (status == 2) {
alert(“rejected by server”);
}
else if (status == 3) {
alert(“invalid parameters”);
}
else if (status == -1) {
alert(“general error”);
}
else {
alert(“unknown status”);
}
}

function onData(data) {
var resultDiv = document.getElementById(“resultDiv”);
try {
resultDiv.innerHTML += “<br>” + blackberry.utils.blobToString(data.payload);
return 0; //indicate acceptance of payload for reliable push
}
catch (err) {
alert(err);
}
}

function onSimChange() {
var resultDiv = document.getElementById(“resultDiv”);
resultDiv.innerHTML += “<br>” + “SIM card is changed!”;
}