2

我想編寫一個iOS應用程序,它可以作爲客戶端服務器通過蜂窩數據網絡(即沒有典型的集中式服務器)連接到其他iPhone。我們的目標是通過一些通知的方式從iPhone服務器向多個iPhone客戶端分享一系列約200條短消息消息。蘋果推送通知服務對於此類通知應該沒問題,但不需要專門使用它。iPhone應用程序可以充當服務器來發送消息或推送通知嗎?

我想從一個iPhone發送推送通知到另一個可以通過從服務iPhone連接到gateway.push.apple.com作爲Local and Push Notification Programming Guide描述,但我無法找到任何人討論這種做法(也許是太明顯了?)。

這一切的原因是爲了避免基礎架構的開銷。如果這是不可行的,那麼最小化或避免額外硬件的選擇是受歡迎的。

要求

  • 通信必須是[嚴格]在蜂窩數據網絡
    • 的Wi-Fi無法使用
    • 藍牙沒有足夠的範圍
  • 與iPhone服務器多向iPhone客戶端進行單向通信
  • 沒有越獄
  • 理想服務手機的電池將能夠處理這個沒有補給

更新11年5月4日2:12 EST:只是要清楚,我不對使用APN有特別的要求;我認爲這可能是可行的,但從下面的討論來看,聽起來並非如此。但是,我仍然對任何其他系統感興趣,這些系統可以幫助我通過某種類型的消息傳遞或類似的通信方式達到相同的最終結果。

+0

如果你能弄清楚如何處理將推送令牌發送回服務器的設備,那麼在iOS上編寫apns服務器將非常容易。您應該閱讀文檔並嘗試在託管框中實現apns服務器。 – 2011-05-04 03:07:36

回答

3

理論上,您應該可以編寫一個iOS應用程序,該應用程序可以連接到APNS並將通知發送到運行您的應用程序的其他設備。但是,您的主要問題將是實際獲取其他設備的「令牌」。當你有一個集中的服務器完成這項工作時,它總是在線的,因此,客戶端可以通過http進行「談話」並註冊它們(在過程中將它們的令牌給予服務器)。因此服務器知道客戶端令牌,並且可以使用它們通過APNS向客戶端發送通知。

但是,在您談論的情況下,這是不可能的。但這並不是說它不可能。也許你可以使用電子郵件賬戶X來存儲所有的客戶令牌。每個客戶都會發送一封電子郵件給這個賬戶,並在其中添加令牌。因此,當另一個'客戶'想要發送通知給另一個客戶端時,它可以通過重新輸入電子郵件帳戶的收件箱來找到該令牌(當然,您可以緩存這些內容並優化它)。

但重點是一些(第三方(例如:電子郵件服務提供商)/您自己的)24/7上線的服務器將如何參與該過程。

讓我們知道你是如何進步的。知道這很有趣。

+0

我認爲主要的問題實際上是APNS密鑰將與iOS應用分發,這意味着任何人都可以抓住它並使用它,無論他們喜歡。 – 2011-05-04 03:49:22

+0

是的,這將是另一個問題。 – thekindofme 2011-05-04 03:58:50

+0

有趣的想法。在典型的情況下,iPhone服務器應用程序需要一次向20-30個客戶端廣播一個事件鏈。也許我可以將客戶端令牌存儲在AWS等簡單的數據庫中,這樣基礎架構就很少。 – 2011-05-04 06:20:20

相關問題