簡體   English   中英

Ionic 2中的通知

[英]Notifications in Ionic 2

我已經看了很多帖子。

有點困惑的是,即使my-app被用戶殺死了,ionic 2 app也會發送本地通知嗎?

我有以下情況。

假設應用被用戶殺死

我們能否在后台運行該應用程序(例如24小時后通過操作本地/雲存儲來檢查某些條件是否成立)然后發送本地通知?

我是離子2的新手。那么有人可以讓我知道上述情況是可能的嗎?

如果無法實現,那么讓我知道我們可以通過推送通知服務器(假設該應用被用戶殺死)來操縱(獲取和分析) 本地存儲嗎?

兩者都有可能。 我將告訴您我將如何做而不共享代碼(可能會很長),我將為您提供步驟,您可以弄清楚。

對於第一種情況,您需要從'ionic-angular'和MomentJS導入LocalNotification pluginLocalStoragePlatform (不是必需的,但強烈建議)。

  • 您需要創建一個服務,至少它很好,因此您無需將所有內容都放入app.components
  • 您可以使用3種Platform方法來驗證和設置LocalNotification ,它們是.pause.resume.ready
  • 暫停將檢查用戶是否已離開該應用程序,但該應用程序仍在后台運行。
  • 簡歷將檢查用戶是否已返回該應用程序,但不會觸發該應用程序被殺死的情況。
  • 准備就緒會在平台准備就緒時觸發,您將使用它來檢查應用程序是否已被終止並“首次”啟動。
  • 您將需要MomentJS來操縱時間,因為將天/小時添加到當前日期時間更加容易。
  • LocalNotification接受ISO字符串和UNIX時間戳來安排通知。
  • 在創建的服務中,您將擁有計划和取消LocalNotification的方法,請查看插件Wiki。
  • 在暫停方法上,您將調用schedule方法,並計划一個具有Moment的localNotification,將Moment添加到當前時間1天: Moment().add(1, 'day').unix()並在'at'中使用結果您的時間表。
  • 這將返回一個帶有您的通知數據及其ID的this.storage.set('Daily', ReturnedID); ,將此ID像this.storage.set('Daily', ReturnedID);一樣保存在您的localStorage中this.storage.set('Daily', ReturnedID);
  • 應用就緒或恢復后,您將取消通知。
  • 基本上就是這樣,關閉時保存通知,進入時取消通知。

第二種情況要難一些,並且您需要一個后端,因為您需要不斷檢查用戶退出應用程序的時間。 您只需要MomentJSPlatform導入,推送服務插件以及一種連接到數據庫的方式即可(通過Http或插件,如果它是Firebase之類的服務)。

  • 對於第一個場景,新服務,調用該服務方法的平台,步驟是相同的​​,但是現在將為您的push插件添加一些方法,因此當您收到push時,可以顯示和操作數據。
  • 大多數推送服務(和localNotification)都具有Data屬性,您可以在其中與用戶共享一些數據,在這種情況下,它將是您要在localStorage中保護的數據。
  • 您將需要該用戶的令牌,以便可以向其發送推送,請查看您的推送文檔,以了解如何獲取該令牌並將其保存到用戶數據庫寄存器/節點。
  • 當用戶離開應用程序時,您希望用戶收到該推送的時間存儲在數據庫中(我假設您要與第一種情況相同,但方式不同)。
  • 當用戶返回到應用程序時,您將確定該時間寄存器。
  • 棘手的部分:您將需要后端來檢查每個用戶寄存器,並獲取他們需要接收推送的時間,因此,如果時間小於當前時間,則將發送推送並刪除該寄存器。
  • 在應用程序中,當用戶收到推送時,功能會將數據保存到localStorage,進行操作,准備就緒或您想要的所有內容。

抱歉,我無法共享一些代碼,但是如果您需要更多的解釋或想法,請詢問。 希望這會有所幫助:D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM