黑莓webworks应用程序和推送通知

use*_*452 3 blackberry push-notification blackberry-webworks

经过多天的在线搜索,我从来没有找到我的问题的答案,甚至没有找到任何已经设法做我正在尝试的人.

我正在尝试在Blackberry的WebWorks应用程序中实现推送通知,但没有任何运气.我尝试过使用Blackberry的演示,但即使那些似乎没有用(并且大多数都是用于java中的本机应用程序),并且没有任何来自BlackBerry支持团队的反馈.

我想知道的是,如果这是可能的,如果有人做了,并且有人有一个工作样本供我指导.

提前致谢

ria*_*121 6

首先,您需要为黑莓推送服务注册在这里

然后,他们会在几天内通过应用程序ID,端口和推送启动器密码等向您发送电子邮件.

在客户端,您可以监听推送请求:

var port = 100; // Change this to the port you received from RIM
var appId = "The app ID you received from RIM";

var serverUrl = "http://pushapi.eval.blackberry.com";
var max = 100;

var wakeUpPage = "index.html";

function init() {
    var ops = {port : port, appId : appId, serverUrl : serverUrl, wakeUpPage : wakeUpPage, maxQueueCap : max};
blackberry.push.openBISPushListener(ops, pushReceive, pushRegister, simChange);
}


function pushReceive(data) {
    try {
        var message = blackberry.utils.blobToString(data.payload);
        return 0;
    }
    catch(err) {
    }
}

function pushRegister(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");
}
}

window.onload = function() {
    init();
}
Run Code Online (Sandbox Code Playgroud)

另外,还要确保你<feature id="blackberry.push" /><feature id="blackberry.utils" />你的config.xml文件.

我还注意到,当应用程序关闭时,pushReceive()不会被调用.您可以通过在后台运行应用程序来绕过此功能:

function handleExit() {
    blackberry.app.requestBackground();
}

blackberry.app.event.onExit(handleExit);
Run Code Online (Sandbox Code Playgroud)

并用于blackberry.app.requestForeground();将应用程序带到前面.

我花了一段时间才弄明白的另一件事是,在调用pushRegister()之前可能需要一段时间(这会在BIS上注册PIN).因此,请确保调用此方法,否则您将永远无法接收推送消息.