【问题标题】:Can an iPhone app act as a server to send messages or push notifications?iPhone 应用程序可以充当服务器来发送消息或推送通知吗?
【发布时间】:2011-08-18 04:32:02
【问题描述】:

我想编写一个 iOS 应用程序,它可以作为客户端通过蜂窝数据网络(即,没有典型的集中式服务器)连接到其他 iPhone 的服务器。目标是通过某种通知方式,一次从 iPhone 服务器共享大约 200 条短事件消息系列到多个 iPhone 客户端。 Apple Push Notification 服务可以处理此类通知,但没有必要专门使用它。

我认为可以通过从服务 iPhone 连接到gateway.push.apple.com 来将推送通知从一台 iPhone 发送到另一台 iPhone,如 Local and Push Notification Programming Guide 中所述,但我找不到其他人讨论这种方法(也许太明显了? )。

这一切的原因是为了避免基础设施的开销。如果这不可行,欢迎使用可减少或避免额外硬件的替代方案。

要求

  • 必须[严格]通过蜂窝数据网络进行通信
    • Wi-Fi 不可用
    • 蓝牙范围不够
  • 与多播到多个 iPhone 客户端的 iPhone 服务器进行单向通信
  • 没有越狱
  • 理想情况下,服务电话的电池无需充电即可处理此问题

美国东部时间 2011 年 5 月 4 日凌晨 2:12 更新: 明确一点,我对使用 APN 没有任何特殊要求;我认为在这种设置中可能是可行的,但从下面的讨论中,听起来情况并非如此。但是,我仍然对任何其他可以帮助我通过某种类型的消息传递或类似形式的通信实现相同最终结果的系统感兴趣。

【问题讨论】:

  • 如果您能弄清楚如何处理将推送令牌发送回服务器的设备,那么在 iOS 上编写一个 apns 服务器将非常容易。您应该阅读文档并尝试在托管机器上实现 apns 服务器。

标签: iphone ios architecture push-notification apple-push-notifications


【解决方案1】:

理论上,您应该能够编写一个可以连接到 APNS 并向运行您的应用程序的其他设备发送通知的 iOS 应用程序。但是,您的主要问题将是实际获取其他设备的“令牌”。当您有一个集中式服务器来完成这项工作时,它始终在线,因此,客户端可以通过 http 与其“对话”并自行注册(在此过程中将其令牌提供给服务器)。因此,服务器知道客户端令牌,它可以使用它们通过 APNS 向客户端发送通知。

但是,在您所谈论的场景中这是不可能的。但这并不是说它不可能。也许您可以使用电子邮件帐户 X 来存储所有客户令牌。每个客户都会向该帐户发送一封电子邮件,其中包含他们的令牌。因此,当另一个“客户”想要向另一个客户发送通知时,它可以通过参考电子邮件帐户的收件箱来找到令牌(当然,您可以缓存这些东西并以无数种方式对其进行优化)。

但关键是如何让 24/7 全天候在线的(第三方(例如:电子邮件服务提供商)/您自己的)服务器参与该过程。

让我们知道您在这方面的进展情况。知道会很有趣。

【讨论】:

  • 我认为主要问题实际上是 APNS 密钥将与 iOS 应用程序一起分发,这意味着任何人都可以随心所欲地抓住它并使用它。
  • 是的,那将是另一个问题。
  • 有趣的想法。在典型的场景中,iPhone 服务器应用程序需要一次向 20-30 个客户端广播一个事件链。也许我可以将客户端令牌存储在 AWS 上的简单数据库中,或者类似这样的基础设施最小化的数据库中。
  • 当 iPhone 应用程序直接向 APNS 发出请求时,必须为每台设备发出一个请求。 APNS 还不支持批处理,甚至不支持广播。电话上的网络可用性不是您应该依赖的。除了安全和网络问题,这是个好主意;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
相关资源
最近更新 更多