2011-12-22 13 views
18

我一直在挖掘嘗試爲客戶端發現蘋果推送通知的一些數據,而我一直無法找到答案的是推送通知在離線設備隊列中將被佔用多長時間纔會被移除。推送通知在被刪除之前坐在隊列中多久?

例如,可能會有很長的時間,例如2-3個月,其中設備可能處於非活動狀態並關閉電源。我只是想知道多久,我可以期待一個通知逗留多久,等待被傳遞到一個離線設備,然後它會被自動刪除(這正是我所知道的是什麼發生)。

+1

爲了安全起見,您的服務器可能會向您的應用公開一個API端點,以允許您的應用在特定日期後直接輪詢您的服務器以啓動一組通知。 – 2011-12-22 20:22:10

+1

如果長時間存儲郵件的APNS服務器出現問題,爲什麼不發送'空'推送通知來手動過期郵件。 APNS上的QoS只會排隊一個消息。 – 2011-12-22 22:35:12

回答

17

官方開發者文檔不清楚這一點。從developer.apple.com

蘋果推送通知服務包括服務 (QoS)的組件,其執行一個存儲和轉發功能的默認質量。如果APN 嘗試傳遞通知但設備處於脫機狀態,則QoS 將存儲該通知。它僅在設備上保留每個 應用程序的通知:從該應用程序的 供應商收到的最後一個通知。當脫機設備後面的 重新連接時,QoS會將存儲的通知轉發給設備。 在刪除 之前,QoS會在有限的時間內保留通知。

但根據PCWorld,它的28個日:

如果應用程序正在運行,它會立即得到通知。如果 應用程序未運行,則通知將保留在手機中,在應用程序下次啓動時消耗爲 。如果發送者嘗試傳送時iPhone處於脫機狀態,則APNS會嘗試在28天內發送 的通知。

儘管2009年的28天可能是真的,但如果今天有所不同,我也不會感到驚訝。文檔中的含糊不清是蘋果改變這個超時時期的一個很好的藉口。

+0

謝謝。我已經閱讀了28-30天的任何地方,是的,我看到基本上說'最終'的官方模糊文檔。感謝您的確認! – NicholasTGD 2011-12-22 21:19:30

+2

要驗證這一點,您需要28-30個已關閉的iPhone,併爲每個iPhone排隊。然後每天打開一個,直到你沒有收到消息。他們真的沒有讓我們這麼容易...... – paislee 2011-12-23 06:20:37

+1

因此,如果我發送了一個新的通知給已經排隊的設備......新的通知將排隊,隊列中的一個將被刪除?正確? – Jeremy 2014-01-25 03:57:12

2

在挖掘文檔時,我發現我們可以使用'expiration date'參數來控制APNS通知的排隊。

Here是到期日期的使用

apns-expiration

甲UNIX紀元日期以秒錶示(UTC)的詳細說明。此標題標識通知不再有效並可以丟棄的日期。

如果此值不爲零,APN將存儲通知並嘗試將其至少傳遞一次,如果第一次無法傳遞通知,則根據需要重複嘗試。如果值爲0,APN將通知視爲立即過期,並且不存儲通知或嘗試重新傳送通知。

+2

哪裏?您的網址無效或無效 – Shamsiddin 2016-04-10 11:46:33

+0

修復了鏈接。 – Zano 2016-11-07 19:54:52

+0

不幸的是,本文檔不保證任何有關保留的信息。如果我指定將來10年的到期日期,我非常懷疑該服務會保留很長時間。另外,文檔忽略瞭如果未指定到期日期會發生什麼情況。 – augurar 2017-04-27 03:37:13