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