2014-10-10 17 views
0

我似乎無法得到解決。文件中所述的APNS具有盡力而爲的交付,即不保證交付。但是,如果我要在我的客戶端/服務器應用程序中使用推送通知模式,我必須以某種方式使用它們。iOS APNS「盡力而爲」的後備

通用模型如下所示:服務器上有新數據 - >然後服務器發送推送通知,通知客戶端有新數據可用 - >客戶端下載新數據。

問題是,如果我不能100%地依靠要傳遞的通知,我可以使用什麼樣的回退機制,以便我可以確保客戶端接收服務器上可用的新數據?如何確保客戶使用APNS獲得最新的數據?

回答

3

確保客戶端使用APNS獲得最新數據的方法是什麼?

有沒有辦法做到這一點只是 APNS。您的客戶需要在應用程序被帶到前臺時查詢您的服務器,以查看是否有新數據,而不管您是否丟失或收到了任何推送通知。

+1

是的,我幾乎在想同樣的事情。我無法理解的是 - 無論如何,當客戶端每次將應用程序帶到最前面時都會查詢服務器,APNS有什麼意義?回想起來,這讓我想到,如果我不能依賴APNS,那麼如果我必須查詢服務器,那麼使用它們的意義何在?謝謝。 – Petar 2014-10-10 15:35:24

+0

重點是當應用程序在後臺時能夠顯示警報或觸發設備上的其他操作。或者允許應用在前臺避免輪詢新數據。在提交應用程序時檢查新數據的頻率比每N秒/分鐘輪詢頻率低很多。 – 2014-10-10 15:38:23

+0

因此,如果應用程序處於前臺並且用戶正在與它進行交互,並且服務器上有新數據並且未發送通知 - 那麼客戶如何知道獲取新數據?我看到的唯一選擇是輪詢或做一些愚蠢的事情,比如更新每個viewWillAppear上的數據:' – Petar 2014-10-10 15:40:46

0

這一切都取決於你如何計劃使用APNS。

可以說你正在製作一個賣eBay這樣的物品的應用程序。您有:
- 投標放置多個用戶
- 倒計時項關閉時間

你不會使用APNS更新個人設備上的定時器或通知他們該項目的當前價格。這些對於依靠盡力而爲的交付來說太關鍵,而不是APNS的預期用途。

如果在這種情況下,您應用程序每隔X秒輪詢一次服務器以獲取更新的信息,那麼最好。然後,您可以使用APNS獲取非關鍵功能,例如通知用戶是否出價過高或是否贏得了該項目。