2012-07-26 93 views
3

我想創建一個應用程序,將通過服務器通知新的事件。 (可以說我有一家商店,我需要通知我所有的iPhone用戶銷售我的產品或者類似的東西)下載我的應用程序並運行它並將其放入後臺的用戶必須得到此通知。我相當新的iOS和Objective-C,但如果我沒有錯,這可以通過蘋果推送通知。我一直在閱讀關於這一點,發現有一些提供商可以讓你發送這個通知。我的問題是,有沒有辦法在c#中自己創建自己的通知「中心」,然後自己發送通知給iPhone-s,如果無法完成,是否有免費提供者?iPhone推送通知urbanairship,phonegap,c#

和另一件事。在Objective-C應用程序中,您必須訂閱您的應用程序才能聽到這類事件。您可以在phonegap或其他技術中創建應用程序,以便它可以與通知一起使用嗎?你可以說讓embeed你的應用程序在objective-c(像web應用程序在objective-c)

回答

3

肯定你可以做你自己的C#程序,將APN推到你的客戶端(事實上,我自己在很多應用程序)。你必須瞭解的是,APN的體系結構有兩個重要的事實:

  1. APNs是最好的努力,所以不保證他們將會達到每一次。
  2. 到達客戶端時,APN不能保存大量信息(它們的位數有限,請參閱Apple文檔)。

由於這些事實,您可能需要有自己的服務器應用程序(也可以是C#),它將處理將真實信息發送給客戶端,並確保數據也到達客戶端。不用說,這個服務器應用程序應該坐在真正的服務器上運行。也許由於這個事實,一些開發人員開始尋找第三方解決方案,但是我個人更喜歡不使用第三方,而我自己也做了一切。

除了擁有自己的服務器應用程序,您的iPhone應用程序將需要某種類型的數據庫(可能是SQLite3)來存儲接收到的消息並在稍後顯示它們。

編輯:您的問題在下面的評論答案:

對於第一個問題:「爲什麼iPhone應用程序必須有SQL數據庫」。事實上,這不是必須的,正如我在上面的回答中所說的那樣,這是可能的或可能的。要知道您是否需要數據庫,這取決於您的應用程序本身的性質。例如,您可能正在向您的客戶端推送文本和圖像,在這種情況下,您無法將這些數據放入APN的有效內容中。另一種可能性是,即使用戶放棄了APN消息,您可能也不希望丟失發送的通知,但當您稍後打開應用程序時,您可能還想再次顯示它...因此,應用程序的性質決定了您是否需要服務器與否。

對於第二個問題「你說你不需要通過第三方發送通知」,讓我在我的答案中澄清一些事情。作爲一名蘋果開發者,我不認爲蘋果服務器是第三方。換句話說,真正的APN只能通過Apple服務器發送,我們無法改變這一事實(我們也不想改變它)。因此,在這一天結束時,真正的APN將被髮送到Apple服務器,Apple服務器將會將其交付給實際的客戶端。我認爲第三方是有他自己的服務器的人,你發送你想要的信息給他,然後他把它發送給Apple服務器。在這種情況下,你和Appl APN服務器之間有人,這就是我稱之爲第三方的人,這個第三方可以避免,因爲你的C#代碼可以直接連接到Apple APN服務器,並要求它將消息發送給客戶端。我希望我澄清我的觀點。

+0

thnx用於該重播...但是還有一件事,爲什麼iPhone應用程序必須具有SQL數據庫?我的意思是,當它得到一個通知,你可以選擇打開應用程序,並顯示通知的細節,或忽略它,它會消失,不是嗎? – gorgi93 2012-07-26 21:37:57

+0

還有一件事...你說你不需要通過第三方發送通知,但是我在幾個博客中讀到了你可以創建你的服務器,但仍然發送通知給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