我正在尝试在Blackberry的WebWorks应用程序中实现推送通知,但没有任何运气。我尝试过使用Blackberry的演示,但即使那些似乎不起作用(其中大部分都是针对java中的本机应用程序),并且没有任何来自BlackBerry支持团队的反馈。
我想知道的是,如果有可能的话,如果有人已经这样做了,并且有人有一份工作样本供我指导。
提前致谢
答案 0 :(得分:6)
您首先需要注册Blackberry Push服务here
他们会在几天内向您发送一封电子邮件,其中包含应用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();
}
还要确保config.xml中有<feature id="blackberry.push" />
和<feature id="blackberry.utils" />
。
我还注意到,当app关闭时,pushReceive()不会被调用。你可以通过在后台运行应用程序来绕过这个:
function handleExit() {
blackberry.app.requestBackground();
}
blackberry.app.event.onExit(handleExit);
并使用blackberry.app.requestForeground();
将应用程序带到前面。
我花了一段时间才弄清楚的另一件事是,在调用pushRegister()之前可能需要一段时间(这会在BIS上注册PIN)。 因此,请确保调用此方法,否则您将永远无法接收推送消息。
答案 1 :(得分:2)
可以在WebWorks应用程序中推送服务,绝对可以实现。 Push API提供了有关在WebWorks中使用BIS和BES推送服务的更多详细信息。我们的支持论坛还有一个完整的BlackBerry Push Sample App可供您用作参考 - 这些文件可在本文末尾下载。