2017-06-07 39 views
0

我已經經歷了很多帖子。離子2中的通知

即使我的應用程序被用戶殺死,它有點混亂,理解離子2應用程序發送本地通知?

我有下面的情況。

假設應用程序 - 被殺死通過用戶

我們可以運行的應用程序在後臺(如24小時後檢查是否存在 條件是通過操縱本地/雲存儲真正的),然後發送本地通知?

我是新來的離子2.所以任何人都可以讓我知道上面的情況是可能的嗎?

如果不可能,那麼讓我知道我們可以通過推送通知服務器(假設應用程序被用戶殺死)操縱(獲取和分析)本地存儲?

+0

本地通知不需要在前臺或後臺模式的應用程序。他們安排,你不能打開應用程序,一旦它被用戶殺害 –

+0

@varunaaruru那麼後臺服務呢?即使應用程序被殺害它們也可以運行嗎? – Junaid

+0

沒有..名稱是後臺服務,所以它應該在後臺 –

回答

0

兩者都是可能的。我會告訴你我將如何做,而不是共享代碼(可能會很長),我會給你的步驟,你可以弄明白。

對於第一種情況,您需要從'ionic-angular'和MomentJS(不要求,但強烈推薦)導入LocalNotification plugin,LocalStorage,Platform

  • 你需要創建一個服務,至少它是好的,所以你不需要把所有東西都放在你的app.components中。
  • 您可以使用Platform方法中的3個來驗證並設置LocalNotification,它們是.pause.resume.ready
  • 暫停將檢查用戶是否已經離開了應用程序,但它仍然在後臺運行。
  • 簡歷將檢查用戶是否已回到應用程序,但如果應用程序被殺害則不會觸發。
  • 準備就緒會在平臺準備就緒時觸發,您將使用它來檢查應用程序是否已被殺死並正在「第一次」啓動。
  • 您需要使用MomentJS來操作時間,因爲它更容易在當前日期時間內添加日/小時。
  • LocalNotification接受ISO字符串和UNIX時間戳以安排通知。
  • 在您創建的服務中,您將擁有安排和取消LocalNotification的方法,請查看插件wiki。
  • 在暫停方法中,您將調用計劃方法並計劃一個具有Moment的localNotification,將當前時間添加1天:Moment().add(1, 'day').unix()並在計劃的'at'處使用結果。
  • 這會返回與您的通知的數據的承諾,它的ID,在你的localStorage保存此ID喜歡this.storage.set('Daily', ReturnedID);
  • 當應用程序已準備就緒或恢復你會取消的通知。
  • 所以基本就是這樣,當你離開時保存通知,當你進入取消它時。

第二種情況有點困難,你需要一個後端,因爲你需要不斷檢查用戶離開應用程序的時間。你只需要MomentJSPlatform導入,你推送服務插件和一種連接到你的數據庫的方法(通過Http或插件,如果它是像Firebase這樣的服務)。

  • 的步驟是在第一方案相同,新的服務,該平臺調用該服務的方法,但你推插件現在將添加一些方法,所以當你收到一個推送您可以顯示和處理數據。
  • 大多數推送服務(和localNotification)都有一個Data屬性,您可以在其中與用戶共享一些數據,您的情況就是您想要在localStorage中安全使用的數據。
  • 您將需要該用戶的令牌,以便您可以向他發送推送請參閱推送文檔以瞭解如何獲取該令牌並將其保存到用戶數據庫寄存器/節點。
  • 當用戶離開應用程序時,您將在數據庫中存儲您希望用戶接收該推送的時間(我假設您想以與第一種方案相同的方式進行,但採用不同的方式)。
  • 當用戶回來的應用程序,你會辜負時間註冊。
  • 棘手的部分:你需要你的後端通過每個用戶註冊並獲得他們需要接收推送的時間,所以如果時間是<,那麼當前時間你會發送推送和刪除寄存器。
  • 在應用程序中,當用戶收到推送函數時,會將數據保存到localStorage,操作,準備好或所需的一切。

對不起,我不能分享一些代碼,但如果你需要更進一步的解釋或想法就問。 希望這有助於:D