我想创建一个应用程序,服务器会通知新事件。 (假设我有一个商店,我需要通知我的所有iPhone用户我的销售或类似的东西)用户将下载我的应用程序并运行它然后将它放在后台必须通知这个。我是iOS和Objective-C的新手,但如果我没错,可以通过苹果推送通知来完成。我一直在读这个,发现有一些提供商可以让你发送这个通知。我的问题是,有没有办法创建你自己的通知“中心”让我们说c#并自己发送通知到iPhone-s,如果这样做不能做任何免费提供商吗?
另一件事。在objective-c应用程序中,您必须订阅您的应用程序才能收听此类事件。你可以在phonegap或其他技术中创建应用程序,以便它可以处理通知吗?你能不能让你的应用程序嵌入objective-c(比如objective-c中的web应用程序)
答案 0 :(得分:3)
当然,你可以做自己的C#程序,将APN推送给你的客户(实际上我在许多应用程序中都是这样做的)。您必须了解的是,APN的体系结构有两个关键事实:
由于这些事实,您可能需要拥有自己的服务器应用程序(也可能是C#),它将处理向客户端发送真实信息并确保数据也到达您的客户端。不用说,这个服务器应用程序应该在真实服务器上运行。也许是由于这个事实,一些开发人员开始寻找第三方解决方案,但我个人不喜欢不使用第三方,我自己也做了。
除了拥有自己的服务器应用程序之外,您的iPhone应用程序还需要某种数据库(可能是SQLite3)来存储收到的新闻并在以后显示它们。
编辑:在下面的评论中回答您的问题:
对于第一个问题“为什么iPhone应用程序必须具有sql db”。事实上,这不是必须的,正如我在上面的回答中所说,这是可能的或可能的。要知道您是否需要数据库,这取决于您的应用程序本身的性质。例如,您可能正在向客户端推送文本和图像,在这种情况下,您无法将此类数据放入APN的有效负载中。另一种可能性,您可能希望即使用户丢弃了APN消息也不会丢失已发送的通知,您可能希望稍后再次打开应用程序时再次显示...因此应用程序的性质决定您是否需要服务器与否。
对于第二个问题“你说你不需要通过第三方发送通知”,让我在答案中澄清一些问题。作为Apple开发人员,我不认为Apple服务器是第三方。换句话说,真正的APN将只通过Apple服务器发送,我们无法改变这一事实(我们也不想改变它)。因此,在一天结束时,真正的APN将被发送到Apple服务器,Apple服务器将努力将其提供给实际的客户端。我认为第三方是有自己的服务器的人,你发送你想要的消息,然后他把它发送到Apple服务器。在这种情况下,你和Appl APN服务器之间有人,这就是我所谓的第三方,可以避免这个第三方,因为你的C#代码可以直接连接到Apple APN服务器并要求它发送消息给客户端。我希望我澄清了我的观点。
答案 1 :(得分:2)
是的,您可以将APNS与phonegap应用程序一起使用:Receiving push notification on PhoneGap for iOS
关于服务器,除了从头开始做所有事情之外,还有另一个选项。您可以通过API使用第三方服务器,似乎pushwoosh(http://pushwoosh.com)家伙提供此选项(并且他们也提供了phonegap集成)