2010-11-03 107 views
7

我有一個iPhone應用程序發送通知,一切工作正常...除了有時:)iphone和通知:通知的最大數量?

讓我解釋一下:我使用的是一個非常簡單的PHP腳本來發送通知(使用stream_context_create方法),但一些用戶告訴我他們沒有收到一些通知。顯然,我可能會遇到一些情況,我需要在一分鐘內發送多達50,000個通知,我認爲這可能是問題所在。我正在使用一個單一的流來發送所有通知。

你們有沒有遇到過這樣的問題?我需要分成幾個流嗎?有沒有關於我可能在流中發送的最大通知數的任何信息?

謝謝:)

編輯1

「速度」是不是這裏的問題:我能推一分鐘內我的所有通知蘋果(我可能會在未來的某個問題如果我的用戶數量增長了,但沒關係ATM)。我在這裏看到的問題是,蘋果可能會認爲我是垃圾郵件發送者或其他東西,並且不會提供我所有的50,000條通知:/您是否知道我如何確定這一點?

+1

您是否考慮過創建一個守護進程腳本並將通知推送到守護進程以適當的速度處理的堆棧上?如果您的通知遲到了五分鐘,我認爲這是一個適當的解決方案,而不會完全改變語言等。 – 2010-11-08 20:38:38

+0

剛剛編輯我的帖子,我意識到我的問題不是很準確 – Vivi 2010-11-09 08:45:44

+0

好吧,我知道我們有與apns相同的問題。我認爲我們通過使用隊列解決了這個問題,並且每秒只向Apple發送一定數量的通知。我不完全知道這個帽子是什麼,但你可能想看看這個,做一點實驗。 – Rengers 2010-11-09 11:11:45

回答

5

我向蘋果開發者代表詢問了這件事,並被告知沒有速率限制,系統從未放棄通知。

(這是12個月前,當推還是比較新的,所以他們可能自那時以來已經改變策略)

+0

只是一個評論:當發送流內容到Apple時,無論何時檢測到無效標記,連接都會停止。因此,確保在您發送數據時確保fwrite()成功。 – Vivi 2010-12-06 13:36:53

1

我寧願開發用C語言發送通知的代碼。作爲一種腳本語言,PHP不能(可能)保證每分鐘處理50K通知所需的速度。而且,你可能需要一個配備最新一代CPU和大量內存的非常大規模的服務器。事實上,爲了滿足您所需的QOS,您必須能夠每秒發送約14條通知。我懷疑PHP實際上能夠應付這個速度。

在過去,我有自己的提供商,而我的QOS遠遠低於您的要求。然後我決定改用商業服務提供商Urban Airship。我發現這項服務很有魅力。沒有一個用戶曾經報告過丟失的通知。你必須付出代價,但自己處理這些東西可能會證明是一件令人難以置信的麻煩事。

+0

剛剛編輯我的帖子,我意識到我的問題並不是真的準確 – Vivi 2010-11-09 08:45:08

0

如果通知流中的失敗(即壞的令牌),然後幾個令牌繼續它錯過了。這是我的經驗,所以我一次發送一個令牌。沒有更多的失敗,除了一個壞的令牌。

0

我遇到了完全相同的問題,但每個流的推送量要少得多。就我而言,我將所有消息(大約250個)推送到同一個流中,而沒有任何消息會被傳送。它看起來似乎是一個壞的標記似乎會導致失敗,但到目前爲止,我不確定什麼是壞的標記。

我讀過其他地方,推送消息在沙箱環境中使用分發令牌,並在分發環境中使用沙箱令牌推送消息可能導致流失敗,但我在這兩種環境中混合使用了令牌錯過了消息,但我當時只是在一個流中推送幾條消息。

長話短說:我推送每條消息一條消息,並且它工作正常。推送250條消息需要數秒的時間,這似乎非常低效,但它對我來說只是一個小小的麻煩。