iPhone应用程序可以作为服务器发送消息或推送通知吗?

3
我想编写一个iOS应用程序,可以在蜂窝数据网络上充当其他iPhone的客户端和服务器(即没有典型的集中式服务器)。目标是通过某种通知方式将一次性的大约200个短事件消息从iPhone服务器共享给多个iPhone客户端。苹果推送通知服务对于这样的通知来说是很好的选择,但没有必要特别使用它。
我认为可以通过从提供服务的iPhone连接到“gateway.push.apple.com”来向另一个iPhone发送推送通知,如本地和远程通知编程指南所述,但我找不到其他人讨论这种方法(也许太明显了?)。
所有这些的原因是为了避免基础设施的开销。如果这不可行,则欢迎最小化或避免额外硬件的替代方案。
要求:
- 通信必须[严格]通过蜂窝数据网络进行 - Wi-Fi不可用 - 蓝牙没有足够的范围 - 单向通信,iPhone服务器向多个iPhone客户端组播 - 没有越狱 - 理想情况下,提供服务的手机电池将能够处理此问题而无需充电
更新5/4/11 2:12 AM EST:只是为了明确,我没有特别要求使用APNs;我认为在这种设置中可能是可行的,但从下面的讨论中听起来似乎不是这种情况。然而,我仍然对任何其他可以帮助我通过某种消息传递或类似的通信形式实现相同最终结果的系统感兴趣。

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

3
理论上,你应该能够编写一个iOS应用程序,可以连接到APNS并向运行您的应用程序的其他设备发送通知。但是,你的主要问题将是实际获取其他设备的“令牌”。当你有一个集中式服务器来完成这项工作时,它总是在线的,因此客户端可以通过http与其“交谈”并注册自己(在此过程中向服务器提供他们的令牌)。因此,服务器知道客户端令牌,并可以使用它们通过APNS向客户端发送通知。
然而,在你所说的情况下,这是不可能的。但这并不意味着不可能。也许你可以使用一个电子邮件帐户X来存储所有客户端令牌。每个客户端都会向此帐户发送一封包含其令牌的电子邮件。因此,当另一个“客户端”想要向另一个客户端发送通知时,它可以通过引用电子邮件帐户的收件箱找到令牌(当然,你可以以无数种方式缓存和优化此内容)。
但重点是,某种方式(第三方[例如:电子邮件服务提供商]/你自己)在线24/7的服务器将参与此过程。
请告诉我们你在这方面的进展。这将是有趣的。

我认为主要问题实际上是APNS密钥将与iOS应用程序一起分发,这意味着任何人都可以获取它并随心所欲地使用它。 - Aidan Steele
是的,那将是另一个问题。 - thekindofme
有趣的想法。在典型情况下,iPhone服务器应用程序需要同时向20-30个客户端广播事件链。也许我可以将客户端令牌存储在AWS上的简单数据库中,这样基础设施就很少了。 - Taylor D. Edmiston
当iPhone应用程序直接向APNS发送请求时,每个设备都必须进行一次请求。目前,APNS尚不支持批处理或广播。而且,您不应该依赖手机上的网络可用性。除了安全和网络问题外,这是个好主意 ;) - Anurag

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