1

我需要在滿足某些條件時通知用戶,但該條件可能會或可能不會在幾個月內滿足。我需要在後臺運行條件檢查(即使應用程序終止),以便我可以檢測到條件(即使它發生在3個月後)。如果滿足條件,那麼我只需要發送通知給單個用戶(不是所有用戶)。繼續在後臺運行代碼以發送通知給單個用戶

我不知道這樣做的最佳方式是什麼。本地通知或推送通知?我不能提前安排本地通知,因爲我不知道什麼時候符合條件。我認爲推送通知不是必需的,因爲我只在幾天/幾個月內向一個用戶發送一個通知。

我還需要不斷在後臺運行此檢查。我知道它可以通過使用位置更新(重要的監視或背景導航)在後臺無限運行。但是我的條件檢查代碼實際上並不需要位置更新。據我所知,Apple只允許在後臺進行位置更新或網絡相關任務(幾分鐘)。這就是爲什麼我正在考慮將我的代碼放在後臺位置更新代碼中。

在我看來,我應該使用本地通知,並將我的代碼放在後臺位置更新代碼中,以便我可以不斷檢查是否滿足某些條件。此背景檢查將安排本地通知並將其顯示給正在使用該設備的用戶。我認爲不可能通過在後臺運行代碼來安排推送通知。

總之,我有以下3個問題

  1. 我應該把我的後臺位置更新代碼?如果沒有,那麼在沒有位置更新的情況下無限地在後臺運行我的代碼的正確方法是什麼?

  2. 如果我將代碼放在後臺位置更新中,而位置更新代碼實際上沒有發送/接收當前位置,Apple會拒絕應用程序嗎?

  3. 在這種情況下,我應該在幾個月後向單個用戶發送通知的情況下使用什麼樣的通知?你會使用本地通知嗎?或推送通知。

請回復。任何幫助是真正的讚賞。

在此先感謝。

回答

0

不幸的是這是一個棘手的問題。

  1. Apple不允許您在後臺創建長時間運行的操作。正如您所提到的,您可以在後臺添加位置更新或音頻代碼,但這兩者都不是很好的解決方案,因爲(1)Apple可能會拒絕您從應用商店購買;(2)用戶可能會關閉應用程序他們注意到手機頂部有一個很大的位置橫幅(或一個奇怪的背景音頻信號),關閉該應用程序將會終止您的操作。對於任何真正長期運行的任務,最好設置一臺服務器並運行一個cron作業或等效的長時間運行。這是唯一可以知道任務將繼續運行的方式。

  2. 對不起,我一次只回答一個,但正如我上面提到的,是的,他們可能會拒絕你的代碼。作爲一個經驗法則:如果您認爲您使用的Apple創建的代碼不適合您使用的代碼,Apple可能會拒絕您的應用程序。

  3. 聽起來你應該使用遠程通知。如果你使用遠程通知,你可能會想要某種後端。您可以使用本地通知在幾個月後通知用戶,但您需要知道準確發送它的時間,這聽起來並不像你想的那樣。

總結:嘗試構建一個簡單的BE。也許可以使用Firebase函數或其他東西,也可以構建一個APNS系統來發送推送。在應用程序中,告訴服務器開始處理信息並在完成時發送回推。這種情況聽起來像是服務器端邏輯的完美用例。

希望有幫助!

+0

感謝您的回覆。是的,我有Parse Server移動後端,而不是Firbase。如何爲Parse Server執行相同的操作?我應該創建一個雲代碼函數來檢查服務器端的條件並在條件滿足時發送推送通知? –

+0

是的,這是完全正確的。解析服務器是完美的選擇。創建雲代碼並使用分析的推送服務。 – tbogosia

+0

Gotcha。非常感謝您快速回復並解決我的問題。 –

相關問題