2009-10-28 78 views
3

當收件人iPhone關閉時,我看到來自Apple推送通知服務器的一些非常奇怪的行爲。這是我的場景:接收iPhone關閉時奇怪的Apple推送通知行爲

- 向蘋果發送推送通知A.在幾秒鐘內,推送通知彈出按鈕在iPhone上按預期顯示。
- 向Apple發送空白通知以取消上一個通知(之前的通知大約10秒後毫無意義,這就是爲什麼我想擺脫它)。 iPhone上沒有顯示任何內容。
- 完全關閉iPhone(不睡覺,關閉電源)。
- 向Apple發送推送通知B.等待10秒。
- 向Apple發送空白通知以取消上一個通知。等待10秒。
- 向Apple發送推送通知C.等待10秒。
- 向Apple發送空白通知以取消上一個通知。等待30秒。
- 打開iPhone。
- 約60秒後,在iPhone上顯示通知B的推送通知彈出窗口。
通知C似乎永遠不會到達。

這很奇怪!從閱讀Apple文檔,我期待只發送最新的推送通知。我希望我的空白通知將被髮送,我當然並不期待最老的未發送推送通知被髮送!

蘋果的文檔說:

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

有沒有人看到過這種行爲?我是否遇到某種時間窗口錯誤?應該發生什麼?

更新
- 如果我關閉手機,併發送任何推送通知,則不會出現此問題之前,等待5〜15分鐘。在這種情況下,當我打開手機時,我沒有看到任何通知彈出窗口,儘管我不確定這是Apple是否放棄通知,或者他們的「隊列」正常工作的結果(即,保留最新的空白通知與彈出的第一個)。
- 我將通過將APNsLogging.mobileconfig放到iPhone上來進一步調查,以查看它得到的通知。
- 關閉wifi並不會改變結果。
- 我在這種情況下向蘋果公司提出了一個錯誤報告。

+0

你是什麼意思取消上一個?發送後無法取消通知。 – erotsppa 2009-10-30 14:26:00

+0

新的推送通知會清除iPhone上接收它們的先前通知,因此您可以通過發送新的空白通知而無需彈出消息來有效取消先前的通知。這對我來說大體上工作正常。 – 2009-12-03 21:37:50

回答

1

爲了記錄在案,我與蘋果公司29日OCT(https://bugreport.apple.com)提出了這個錯誤作爲ID#7349660,然後給了他們,他們在10月30日

從那時起從蘋果沒有迴應想要的附加診斷,所以我我認爲這在他們的優先級列表中可能只是很低,這是公平的,因爲它是一個相當小的時間窗口,可以發生問題(我沒有意識到當我第一次打開這個問題時)。

3

您可能希望通過蜂窩網絡和WiFi網絡檢查此行爲。手機使用WiFi時會出現很多奇怪的行爲,特別是涉及多個NAT路由器的情況,例如,在一個大型公司中有一個主要路由器和每層WiFi路由器,或者在您有多臺路由器的家中使用擴大範圍。但在細胞上它非常穩固。

此外,10秒的取消延遲可能會將其切得太近。他們不保證及時交付,並且在排隊推送請求後,我在生產服務器上的滯後時間高達3分鐘。你可能想要計劃系統擁塞。

無論哪種方式,它聽起來像它可能值得bugreporter報告。

0

在蘋果的文檔據說它可以緩存推送通知高達30 days.so一旦你在你的iPhone切換(前提是你有互連)

+0

您是否看過我的文章,或只是標題?是的,我知道 - 在我的帖子中,我解釋說,在打開電話後,我確實收到了一個推送通知。但是,這只是一系列四項的第一次推動,我的問題是它是否應該是最近的推動,而不是最早的。 – 2009-10-28 19:24:47

0

後,C發送多久ü可能會推B'它似乎可能是一個錯誤,那裏有某種超時服務器端,他們不小心保持B,如果C發送太快後...

如果你有一個很好的測試例子(這似乎是一個很好的測試)我會就此提交雷達報告。

+0

我的測試在每次推送通知之間都有大約10秒的時間。我打算重新測試並改變一些時間間隔以查看是否可以改變這種行爲,然後我會向Apple發出一個錯誤(https://bugreport.apple.com)。 – 2009-10-29 17:34:18