3

我想创建一个应用程序,它将由服务器通知新事件。(假设我有一家商店,我需要通知我所有的 iPhone 用户我的销售或类似的事情)将下载我的应用程序并运行它然后将其置于后台的用户必须得到通知。我对 iOS 和 Objective-C 很陌生,但如果我没有错,这可以通过苹果推送通知来完成。我一直在阅读这方面的内容,并发现有一些提供商可以让您发送此通知。我的问题是,有没有办法在 C# 中创建自己的通知“中心”并自己向 iPhone-s 发送通知,如果无法做到这一点,是否有任何免费提供商?

还有一件事。在objective-c 应用程序中,您必须订阅您的应用程序才能收听此类事件。您可以使用 phonegap 或其他一些技术创建应用程序,以便它可以与通知一起使用吗?你能说在objective-c中嵌入你的应用程序吗(比如objective-c中的web应用程序)

4

2 回答 2

3

当然,您可以编写自己的 C# 程序,将 APN 推送给您的客户(事实上,我自己在许多应用程序中都这样做了)。您必须了解的是,APN 的架构有两个关键事实:

  1. APN 是尽力而为,因此不能保证它们每次都能到达。
  2. 当 APNs 到达您的客户端时,它们无法保存大量信息(它们的位数有限,请参阅 Apple 文档)。

由于这些事实,您可能需要拥有自己的服务器应用程序(也可以在 C# 中)来处理将真实信息发送到客户端并确保数据也到达您的客户端。不用说,这个服务器应用程序应该在真实的服务器上运行。也许由于这个事实,一些开发人员开始寻找第三方解决方案,但我个人更喜欢不使用第三方,我自己做所有事情。

除了拥有自己的服务器应用程序之外,您的 iPhone 应用程序还需要某种数据库(可能是 SQLite3)来存储接收到的新闻并在以后显示它们。

编辑:在下面的评论中回答您的问题:

对于第一个问题“为什么 iPhone 应用程序必须具有 sql db”。事实上,这不是必须的,正如我在上面的回答中所说,这是可能的或有可能的。要知道您是否需要数据库,这取决于您的应用程序本身的性质。例如,您可能正在向您的客户端推送文本和图像,在这种情况下,您无法将此类数据放入 APN 的有效负载中。另一种可能性,即使用户丢弃了 APN 消息,您也可能不希望丢失已发送的通知,您可能希望稍后在他打开应用程序时再次显示它......所以应用程序的性质决定您是否需要服务器与否。

对于第二个问题“您说您不需要通过第三方发送通知”,让我在回答中澄清一些内容。作为一名 Apple 开发人员,我不认为 Apple 服务器是第三方。换句话说,真正的 APN 只会通过 Apple 服务器发送,我们无法改变这个事实(我们也不想改变它)。因此,最终真正的 APN 将被发送到 Apple 服务器,Apple 服务器将致力于将其传递给实际的客户端。我认为第三方是拥有自己服务器的人,您将想要的消息发送给他,然后他将其发送到Apple服务器。在那种情况下,你和 Appl APN 服务器之间会有人,这就是我所说的第三方,并且可以避免这个第三方,因为您的 C# 代码可以直接连接到 Apple APN 服务器并要求它向客户端发送消息。我希望我澄清了我的观点。

于 2012-07-26T19:30:29.437 回答
2

是的,您可以将 APNS 与 phonegap 应用程序一起使用:Receiving push notification on PhoneGap for iOS

关于服务器,除了从头开始做所有事情之外,您还有另一个选择。您可以通过 API 使用第三方服务器,似乎 pushwoosh ( http://pushwoosh.com ) 的人提供了这个选项(他们也提供了 phonegap 集成)

于 2012-07-27T09:06:47.613 回答