2016-09-20 33 views
0

我正在處理的應用程序中,我希望在每12小時後運行後臺服務,甚至應用程序被暫停或任何狀態(如Facebook)。在這項服務中,它將打擊webService並獲取數據。當數據在12小時後更改時,我會收到有關此項目被添加的通知,並且當我點擊該通知時,我將移至特定屏幕。當應用程序暫停並獲取通知並打開特定屏幕時運行服務

我在很多論壇上看到,當應用程序處於後臺狀態時,終止應用程序只需要3-4分鐘,在此之後,不會發生任何事件。 但我在Facebook,WhatsApp或任何其他社交媒體應用程序中看到過,即使應用程序未處於運行狀態,或處於暫停狀態,應用程序仍會收到通知。

請指導我該怎麼做。

+0

您可以使用後臺提取,但執行期限未定義,不受您應用程序的控制。推送通知可能更好 – Paulw11

+0

但是我想在每12小時後獲取數據,即使應用程序被暫停。 –

+0

保證每12小時的唯一方法是每12小時推送一次服務器的通知(從技術上講,由於設備可能處於脫機狀態,因此無法保證)。後臺提取可能適用於您,但時間段不準確 – Paulw11

回答

0

這不是它的工作原理。 您從Facebook或WhatsApp應用中看到的通知是Push Notifications

該應用程序沒有從服務器獲取信息。這是將信息「推送」到用戶手機的服務器。

推送通知不要求您的應用程序能夠正常工作。如果處理正確,點擊它們將啓動您的應用程序並且show the correct screen


要定期運行任務,您可以查看 Background Fetch
這很好,但iOS決定何時調用它,並可以完全停止調用它(如果手機正在節電或者如果您的應用程序是手動殺死例如)。

請記住,在iOS中,有沒有方法強制設備執行代碼,如果您的應用程序被暫停/殺死。您可能想要查看您的工作流程。

+0

我明白了。那麼有沒有其他方法可以在每12小時後運行webService? –

+0

我使用Background Fetch編輯了我的答案。 –

+0

我已經實現了後臺提取,但只有當應用程序處於後臺狀態時才能工作。如果應用程序從內存中暫停,它將停止該任務。 –

相關問題