iPhone推送通知Urban Airship,PhoneGap,C#

3
我想创建一个应用程序,该应用程序将通过服务器通知新事件。(比如说我有一家商店,我需要通知所有iPhone用户我的促销活动或类似的内容)下载并运行我的应用程序并将其放在后台的用户将收到通知。虽然我对iOS和Objective-C还不是很熟悉,但如果我没错的话,这可以通过苹果推送通知来完成。我已经了解了一些提供商可以让您发送这些通知。我的问题是,是否有办法在C#中创建自己的通知“中心”,并自己向iPhone发送通知?如果无法实现这个功能,是否有任何免费提供者呢?
另外一件事情,在Objective-C应用程序中,您必须订阅您的应用程序以便监听这种类型的事件。您能否使用PhoneGap或其他技术创建应用程序,以便它能够与通知一起工作?您能否将您的应用程序嵌入到Objective-C中(就像Web应用程序在Objective-C中一样)?
2个回答

3
当然,你可以自己编写C#程序来向客户端推送APNs(实际上我在许多应用程序中都这样做了)。但你必须明白APN的架构有两个关键点:
1. APNs是尽力而为,所以不能保证每次都能到达。 2. 当APNs到达客户端时,它们无法携带大量信息(它们有限定数量的位数,请参阅Apple文档)。
由于这些事实,你可能需要拥有自己的服务器应用程序(也可以使用C#),该应用程序将处理向客户端发送真实信息,并确保数据也已到达客户端。不用说,这个服务器应用程序应该坐落在一个真正的服务器上运行。也许由于这个原因,一些开发者开始寻找第三方解决方案,但我个人更喜欢不使用第三方,而是自己完成所有工作。
除了拥有自己的服务器应用程序之外,你的iPhone应用程序还需要一些数据库(可能是SQLite3)来存储接收到的新闻,并在以后显示它们。
编辑:回答下面评论中的问题:
对于第一个问题“为什么iPhone应用程序必须具有SQL数据库”。实际上这不是必须的,就像我在上面的答案中所说的那样,这是可能或者可能性。要知道是否需要数据库,这取决于应用程序本身的性质。例如,你可能会向客户端推送文本和图像,在这种情况下,你无法将这样的数据放入APN的有效负载中。另一种可能性是,即使用户丢弃了APN消息,你也不想丢失发送的通知,当他以后再次打开应用程序时,你可能希望再次显示它...因此,应用程序的性质决定了是否需要服务器。
对于第二个问题“你说你不需要通过第三方发送通知”,让我在我的答案中澄清一些事情。作为一名Apple开发者,我不认为Apple服务器是第三方。换句话说,真正的APN只会通过Apple服务器发送,我们无法改变这个事实(也不想改变)。因此,最终真正的APN将被发送到Apple服务器,并且Apple服务器将处理将其传递给实际客户端。我所谓的第三方是指拥有自己的服务器的人,你向他发送想要的消息,然后他将其发送到Apple服务器。在这种情况下,你和Appl APN服务器之间有一个人,这就是我所说的第三方,可以避免这个第三方,因为你的C#代码可以直接连接到Apple APN服务器,并要求它将消息发送到客户端。我希望我已经澄清了我的观点。

谢谢您的回复。不过还有一个问题,为什么iPhone应用程序必须具备SQL数据库?我的意思是当它收到通知时,您可以选择打开应用程序并显示通知详细信息,或者忽略它并让它消失,是这样吗? - gorgi93
还有一件事...你说你不需要通过第三方发送通知,但我在几篇博客中读到,你可以创建自己的服务器,但仍然可以向APNS服务服务器发送通知(链接),那这是怎么回事? - gorgi93

2
是的,您可以在PhoneGap应用程序中使用APNS:在iOS上使用PhoneGap接收推送通知 关于服务器,除了从头开始做一切之外,还有另一种选择。您可以通过API使用第三方服务器,看起来pushwoosh (http://pushwoosh.com) 提供了这个选项(他们也提供PhoneGap集成)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接