我們正在使用MFP 7.0.0.00-20150907-1450並構建針對iOS和Android的混合應用程序。
我們使用"send bulk messages" REST API發送廣播消息。如果在使用IBM MobileFirst Platform 7.0關閉應用程序時收到了onMessage未處理的推送通知
我們在我們的應用中實施了WL.Client.Push.onMessage
,只要應用在收到通知時運行,它就會處理該消息。 如果應用程序在通知到達手機時關閉,則消息有效內容似乎無法到達我們的onMessage
實現。
此行爲在iOS和Android之間是相同的。
我懷疑我們的onMessage
函數被分配與MFP框架試圖將消息傳遞到我們的應用程序之間存在計時問題。
關於如何在應用程序關閉時收到消息時處理消息的一些指示將非常棒!
(下面是我們設置的一些細節。)
我們正在使用的角度和有這是我們主要的應用程序模塊:
if (angular.isDefined(window.WL) && angular.isDefined(window.WL.Client.Push)) {
window.WL.Client.Push.onMessage = function (props, payload) {
console.log('Received push notification in client', JSON.stringify(props), JSON.stringify(payload));
$rootScope.$broadcast('pushNotification', props, payload);
};
}
注意到在此之後(「你必須在任何函數之外聲明它「)。在onMessage
的文檔中,我已將作業移出到甚至是IIFE之外的JavaScript文件的頂部。這個功能似乎並沒有被調用,當然也沒有記錄和變量仍然是不確定的:
var lastPushMessage;
function pushMessageRecorder(props, payload) {
lastPushMessage = {
props: props,
payload: payload
};
console.log('MFP: push received: ' + JSON.stringify(lastPushMessage, null, 2));
}
WL.Client.Push.onMessage = pushMessageRecorder;
我們的安全測試(用戶不用登錄,只是與我們的鑰匙打包一個應用程序):
<customSecurityTest name="customTests">
<test realm="wl_antiXSRFRealm" step="1" />
<test realm="wl_authenticityRealm" step="1" />
<test realm="wl_remoteDisableRealm" step="1" />
<test realm="wl_directUpdateRealm" mode="perSession" step="1" />
<test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1" />
<test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2" />
</customSecurityTest>
讓我們簡化問題。沒有角碼是否工作?如果是這樣,那麼這個問題不是關於Worklight,而是關於角度。 –
這是一個關於工作燈的問題,不管使用角度。問題在於:MFP何時嘗試將推送數據傳遞給應用程序,以及實現者必須注意哪些因素,以便及時定義onMessage函數? (我會繼續研究不同的配置,但是如果沒有這個答案,即使我在我的環境中工作,我也不能確定它是否適用於現場的所有設備。) – N2O
onMessage隨時被調用該應用程序啓動(如果有登錄,然後登錄)。 –