【问题标题】:Blackberry webworks app and push notificationBlackberry webworks 应用程序和推送通知
【发布时间】:2012-06-25 09:04:20
【问题描述】:

在网上搜索了很多天后,我从来没有找到我的问题的答案,甚至没有找到任何人设法做我正在尝试的事情。

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

我想知道的是这是否可行,是否有人做过,是否有人有工作样本供我指导。

提前致谢

【问题讨论】:

    标签: blackberry push-notification blackberry-webworks


    【解决方案1】:

    您首先需要注册黑莓推送服务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" />

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

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

    并使用blackberry.app.requestForeground(); 将应用置于最前面。

    我花了一段时间才弄清楚的另一件事是,在调用 pushRegister() 之前可能需要一段时间(这会在 BIS 上注册 PIN)。 所以请确保它被调用,否则你将永远无法接收推送消息。

    【讨论】:

    • 通过使用此代码,我的状态为 1(网络错误)。请提出解决方案
    • 您好,感谢您的代码。我使用相同的代码,但在注册时出现网络错误。请建议我任何解决方案。
    • 您的 SIM 卡是否已注册 BIS?
    • 是的,我已经注册了 BIS,但仍然来自服务器的响应。
    • 除了实际的网络错误之外,我能想到的只是:您是否注册了推送服务并收到了来自 RIM 的带有您的端口和应用程序 ID 的电子邮件?如果是这样,您是否将 port/appId 替换为您在该邮件中收到的值?如果您注册评估使用 pushapi.eval.blackberry.com 和生产使用 pushapi.na.blackberry.com
    【解决方案2】:

    WebWorks 应用程序中的推送服务是可能的,并且绝对可以实现。 Push API 有更多关于在 WebWorks 中使用 BIS 和 BES 推送服务的详细信息。我们的支持论坛还提供完整的 BlackBerry Push Sample App 供您参考 - 文件可在文章末尾下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多