2015-05-29 54 views
1

我知道這個可能以前已被問過,但不是推送通知的上下文。在接收推送通知時在後臺運行javascript函數?

我正在開發一個應用程序,使用Ionic/Cordova向客戶端發送推送通知,通常是關於他們要觀看的新視頻消息。這些視頻不會流式傳輸,而是傳輸到客戶端(而不是我的電話),所以我想在執行一些後臺JavaScript函數時將視頻存儲在客戶端。

我看過網絡工作者和多線程,但它需要客戶端運行。 JavaScript代碼有一個事件監聽器,用於接收按鈕時,但當它在應用程序被打開之前它不會被執行。

所以我的問題是,它甚至有可能嗎?我會很感激任何關於此事的建議,謝謝!

+0

「當然,它不會被執行,直到應用程序被打開。」 - 也許我正在讀這個錯誤:你是否試圖將視頻推送給沒有打開應用程序的客戶端? – doldt

+0

你說得對,先生,這是客戶的要求之一,他拒絕考慮流媒體^ _^ – Shay

+0

我可能是錯的,但我不確定你可以用cordova來實現這一點,無需編寫一些本地代碼... – Kaz

回答

0

我已經在我的應用程序中使用signalr和推送通知一起做了這個。我的應用程序是一個聊天應用程序。客戶端X可以發送帶圖片或視頻的富文本消息給客戶端Y.

當客戶端X發送消息時,它調用信號服務器和服務器將消息保存在服務器sql中並將圖片或視頻保存在Web服務器中。

如果客戶端Y處於脫機狀態,它將在下次在線時收到消息。如果客戶端Y已聯機:

情況1:在線但在前臺:signalr服務器調用客戶端Y JavaScript函數更新屏幕和本地存儲,客戶端Y立即看到消息和圖片。 (我也播放聲音)

情況2:在線但在後臺或手機屏幕安全模式:signalr服務器調用客戶端Y JavaScript函數更新屏幕和本地存儲,播放另一個聲音。然後向客戶端Y發送推送通知!所以當客戶Y看到這個通知時,它會打開應用程序。並在本地存儲中查看該消息。 (就像Whatsapp)

+0

好吧,有點不同,在我的情況下,視頻在收到通知之前本地存儲! –

+0

是的,它是不同的,但感謝的想法,事情是我正在開發的應用程序將很可能關閉(可能直到通知將被推),所以我需要想出一種方法發送文件到客戶端在我推送通知之前,我猜...但那真的很聰明,你在那裏做了什麼。 :) – Shay

+0

看到我上面的答案。 '如果客戶Y離線'實際上意味着應用程序已關閉!所以每當應用程序重新打開時,我首先從服務器讀取最新的10條消息在顯示屏幕之前。當然,我有一個讓用戶閱讀早期歷史信息的按鈕。 –

相關問題