2012-07-26 96 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