肯定你可以做你自己的C#程序,將APN推到你的客戶端(事實上,我自己在很多應用程序)。你必須瞭解的是,APN的體系結構有兩個重要的事實:
- APNs是最好的努力,所以不保證他們將會達到每一次。
- 到達客戶端時,APN不能保存大量信息(它們的位數有限,請參閱Apple文檔)。
由於這些事實,您可能需要有自己的服務器應用程序(也可以是C#),它將處理將真實信息發送給客戶端,並確保數據也到達客戶端。不用說,這個服務器應用程序應該坐在真正的服務器上運行。也許由於這個事實,一些開發人員開始尋找第三方解決方案,但是我個人更喜歡不使用第三方,而我自己也做了一切。
除了擁有自己的服務器應用程序,您的iPhone應用程序將需要某種類型的數據庫(可能是SQLite3)來存儲接收到的消息並在稍後顯示它們。
編輯:您的問題在下面的評論答案:
對於第一個問題:「爲什麼iPhone應用程序必須有SQL數據庫」。事實上,這不是必須的,正如我在上面的回答中所說的那樣,這是可能的或可能的。要知道您是否需要數據庫,這取決於您的應用程序本身的性質。例如,您可能正在向您的客戶端推送文本和圖像,在這種情況下,您無法將這些數據放入APN的有效內容中。另一種可能性是,即使用戶放棄了APN消息,您可能也不希望丟失發送的通知,但當您稍後打開應用程序時,您可能還想再次顯示它...因此,應用程序的性質決定了您是否需要服務器與否。
對於第二個問題「你說你不需要通過第三方發送通知」,讓我在我的答案中澄清一些事情。作爲一名蘋果開發者,我不認爲蘋果服務器是第三方。換句話說,真正的APN只能通過Apple服務器發送,我們無法改變這一事實(我們也不想改變它)。因此,在這一天結束時,真正的APN將被髮送到Apple服務器,Apple服務器將會將其交付給實際的客戶端。我認爲第三方是有他自己的服務器的人,你發送你想要的信息給他,然後他把它發送給Apple服務器。在這種情況下,你和Appl APN服務器之間有人,這就是我稱之爲第三方的人,這個第三方可以避免,因爲你的C#代碼可以直接連接到Apple APN服務器,並要求它將消息發送給客戶端。我希望我澄清我的觀點。
thnx用於該重播...但是還有一件事,爲什麼iPhone應用程序必須具有SQL數據庫?我的意思是,當它得到一個通知,你可以選擇打開應用程序,並顯示通知的細節,或忽略它,它會消失,不是嗎? – gorgi93 2012-07-26 21:37:57
還有一件事...你說你不需要通過第三方發送通知,但是我在幾個博客中讀到了你可以創建你的服務器,但仍然發送通知給apns服務服務器([link](http:// arashnorouzi .wordpress.com/2011/03/31/send-apple-push-notifications-in-asp-net-part-1 /))那麼最新的呢? – gorgi93 2012-07-26 22:03:29