2010-08-04 79 views
2

我正在開發使用Apple推送通知的iPhone應用程序。在iPhone端一切都很好,在服務器端我有一個問題。但是,當我嘗試查詢反饋服務以獲取卸載應用程序的設備列表時,會發送正確的通知,但我總是得到零結果。我知道我應該從我的一個測試設備卸載應用程序時獲得一個結果。 24小時後,我仍然沒有反饋服務的結果..蘋果推送通知服務器 - 反饋始終返回零元組

任何想法?是否有人知道反饋服務需要多長時間才能認出我的應用程序已從我的測試設備上卸載?這可能是由於沙箱環境?

+1

只是爲了記錄:問題似乎是,一旦支持推送通知的所有應用程序都從設備中移除,就會關閉與蘋果反饋服務的連接。所以你必須安裝兩個支持推送的應用程序,然後才能移除被測試的應用程序。 請參閱:http://stackoverflow.com/a/4015150/978912 – Zakum 2013-05-15 16:24:29

回答

1

我有沙箱環境相同的問題。零元組通過反饋服務返回。

我切換到生產環境來測試我的代碼,一切正常。只要我從設備上卸載應用程序併發送一對推送通知,該設備就會出現在反饋列表中。

0

雖然我不能說定義它不適用於沙箱環境,我很確定它。在生產環境中,卸載我的應用程序後,我發送了幾個(我猜3)推送通知。然後反饋服務返回零元組以外的結果。 (大約在十分鐘內)

它與本案無關,而且爲了獲得通知並獲得反饋結果,您的網絡應該允許APNS使用的端口。

1

我剛纔吃了完全相同的問題:

int bytesReceived = 0; 
byte[] feedbackPacket = new byte[38]; // Each feedback should always be 38 bytes long 
bytesReceived = stream.Read(feedbackPacket, 0, feedbackPacket.Length); 
while(bytesReceived > 0) 
{ 
    ProcessFeedback(feedbackPacket); 
    Array.Clear(feedbackPacket, 0, feedbackPacket.Length); 
    bytesReceived = stream.Read(feedbackPacket, 0, feedbackPacket.Length); 
} 

在沙箱,上面總是返回0與BytesReceived。我在現場主機上運行這個程序,發送一個通知到設備,刪除應用程序併發送第二個。反饋服務在發送第二個請求後的一秒鐘內工作。

我還沒有找到的一件事是多久打一次反饋服務。我現在每10分鐘打一個電話。

0

正如Zakum在評論中所說,如果您刪除最後一個支持推送的應用程序,設備將不會被添加到列表中。

(並確保給它足夠的時間 - 也許10至20分鐘)

From Apple Documentation:

如果您從您的設備或計算機中刪除您的應用程序,然後發送推送通知它,你預計會拒絕設備令牌,並且無效的設備令牌應顯示在反饋服務上。 但是,如果這是設備或計算機上最後一個啓用了推送的應用程序,它將不會顯示在反饋服務中。這是因爲在刪除通知可以發送之前,刪除最後一個應用程序會將推送服務的持久連接關閉。

您可以通過解決此問題,在設備或計算機上至少保留一個啓用了推送的應用程序以保持持續連接。要保持與生產環境的持續連接,只需從App Store安裝任何免費的支持推送的應用程序,然後就可以刪除應用程序並將其顯示在反饋服務中。

回想一下,每個推送環境都有自己的持久連接。因此,要保持與沙箱環境的持續連接,請安裝另一個支持開發推送的應用程序。