2012-06-25 106 views
3

在網上搜索了很多天之後,我從未找到對我的問題的答案,甚至沒有人設法做到我想要的。黑莓webworks應用程序和推送通知

我想在黑莓的WebWorks應用程序中實現推送通知,但沒有任何運氣。我嘗試過使用Blackberry的演示程序,但即使這些演示程序似乎無法工作(並且大部分都是針對Java中的本機應用程序),並且BlackBerry支持團隊沒有任何反饋。

我想知道的是,如果這是可能的,如果有人已經做到了,並且某人有工作樣本供我引導。

在此先感謝

回答

2

在WebWorks應用程序推送服務是可能的,可以肯定可以實現。 Push API有關於在WebWorks中使用BIS和BES推送服務的更多細節。我們的支持論壇也有一個完整的完整的BlackBerry Push Sample App供您使用作爲參考 - 這些文件可在文章結尾處下載。

6

首先,您需要爲黑莓推送服務註冊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(); 
} 

還要確保您有<feature id="blackberry.push" /><feature id="blackberry.utils" />在config.xml中。

我還注意到,當應用程序關閉時,pushReceive()不會被調用。您可以通過在後臺運行的應用程序繞過此:

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

blackberry.app.event.onExit(handleExit); 

,並使用blackberry.app.requestForeground();帶來應用到前面。

我花了一段時間才弄清楚的另一件事是,在調用pushRegister()之前可能需要一段時間(這會在BIS上註冊PIN)。 因此,確保這被調用,否則你將永遠無法接收推送消息。

+0

我通過使用此代碼獲取狀態爲1(網絡錯誤)。請建議解決方案 – silwar

+0

嗨,感謝您的代碼。我使用相同的代碼,但註冊時出現網絡錯誤。請給我建議任何解決方案。 –

+0

您是否已將您的SIM卡註冊到BIS? – riaan121