我有一個Worklight混合應用程序,其中包含基本推送通知,可在android中使用。如果應用程序正在運行並且在通知被推送時處於焦點狀態,則其行爲與我預期的完全相同。我的應用程序中的通知回調被調用,並彈出一個SimpleDialog。 全部好的。IBM Worklight 5.0.6.1 - 手機/應用程序關閉時未收到推送通知
如果我通過單擊主頁按鈕來關閉應用程序,並且有新消息到達,我會在Android通知區域看到通知,並且當我點擊android通知列表中的項目時,該項目會被解除該列表(但該應用程序不會回到焦點)如果我然後從應用程序菜單啓動我的應用程序,它就在我離開它的位置並顯示SimpleDialog。 (我的通知處理程序被稱爲)主要是好的,但我希望應用程序進入焦點,當我在android通知列表中選擇通知。
如果我通過單擊後退按鈕來關閉應用程序,並且有新消息到達,我會在Android通知區域看到通知,並且當我點擊android通知列表中的項目時,該項目將被解除該列表(但該應用程序不會回到焦點)如果我然後從應用程序菜單啓動我的應用程序,它啓動應用程序新鮮(我必須再次登錄),我的通知處理程序永遠不會被調用。 不太好。
如果我強制停止應用程序,或者在通知正在發送時關閉手機(但保留了訂閱),手機上就不會顯示通知。當我重新啓動手機時,我沒有在Android通知區域看到它,並且在啓動應用程序時從未調用應用程序中的通知處理程序。 非常差。
這是預期的行爲?
我用工作燈5.0.6.1,和我見過的平臺4.2.2 Android模擬器這種行爲和物理電話在平臺4.1.2
EDT:添加代碼。
適配器:
WL.Server.createEventSource({
name : "MyPushEventSource",
securityTest: "MyApp-strong-mobile-securityTest"
});
function submitNotification(userId) {
var userSubscription = WL.Server.getUserNotificationSubscription(
'MyPushNotification.MyPushEventSource', userId);
if (userSubscription == null) {
return {
result : "No subscription found for user :: " + userId
};
}
var notification = WL.Server
.createDefaultNotification("There's work to be done!", 1, {});
WL.Server.notifyAllDevices(userSubscription, notification);
return {
result : "Notification sent to user :: " + userId
};
}
,並在應用程序:
WL.Client.Push.onReadyToSubscribe = function() {
var pushSubscribe_Success_Callback = function(response) {
WL.Logger.debug("Enter: pushSubscribe_Success_Callback");
};
var pushSubscribe_Fail_Callback = function(response) {
WL.Logger.debug("Enter: pushSubscribe_Fail_Callback");
};
var pushNotificationReceived = function(props, payload) {
WL.SimpleDialog.show("Notification", props.alert, [
{ text : "OK" }]);
};
WL.Client.Push.registerEventSourceCallback("myPush",
"MyPushNotification", "MyPushEventSource",
pushNotificationReceived);
if (!WL.Client.Push.isSubscribed("myPush")) {
WL.Client.Push.subscribe("myPush", {
onSuccess : pushSubscribe_Success_Callback,
onFailure : pushSubscribe_Fail_Callback
});
}
};
正如我所說的,如果應用程序處於焦點,順利這一切的作品,所以我知道我有Google消息帳戶和密鑰設置正確。但出於某種原因,如果通知發佈時應用程序未處於焦點狀態,我會看到意想不到的結果。
「這是預期的行爲嗎?」 - 對於「力量停止」部分肯定是。 – CommonsWare
我不這麼認爲。我試過這個。見下文。也許「強制關閉」部分,但它在設備斷電時工作正常。 –
它看起來像通知代碼實際上工作正常,(相同的代碼在一個簡單的應用程序中表現完美)但我的應用程序中有其他事情正在導致我看到的行爲。我需要做更多的研究來查明它,但基本的Push通知行爲不是問題。 –