Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone应用程序能否充当发送消息或推送通知的服务器?_Iphone_Ios_Architecture_Push Notification_Apple Push Notifications - Fatal编程技术网

iPhone应用程序能否充当发送消息或推送通知的服务器?

iPhone应用程序能否充当发送消息或推送通知的服务器?,iphone,ios,architecture,push-notification,apple-push-notifications,Iphone,Ios,Architecture,Push Notification,Apple Push Notifications,我想编写一个iOS应用程序,它可以通过蜂窝数据网络(即,没有典型的集中式服务器)充当其他iPhone的客户端和服务器。目标是通过某种通知方式,从iPhone服务器向多个iPhone客户端共享一系列大约200条短事件消息,每次一条。苹果推送通知服务可以用于此类通知,但没有必要专门使用它 我认为可以通过连接到中所述的服务iPhone的gateway.push.apple.com将推送通知从一台iPhone发送到另一台iPhone,但我找不到其他人讨论这种方法(可能太明显了?) 所有这些都是为了避免基

我想编写一个iOS应用程序,它可以通过蜂窝数据网络(即,没有典型的集中式服务器)充当其他iPhone的客户端和服务器。目标是通过某种通知方式,从iPhone服务器向多个iPhone客户端共享一系列大约200条短事件消息,每次一条。苹果推送通知服务可以用于此类通知,但没有必要专门使用它

我认为可以通过连接到中所述的服务iPhone的
gateway.push.apple.com
将推送通知从一台iPhone发送到另一台iPhone,但我找不到其他人讨论这种方法(可能太明显了?)

所有这些都是为了避免基础设施的开销。如果这是不可行的,则欢迎尽量减少或避免额外硬件的替代方案

要求

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

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

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

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

但问题是,一个(第三方(例如:电子邮件服务提供商)/您自己的)全天候在线服务器将如何参与这一过程


让我们知道您在这方面的进展情况。了解这一点很有意思。

如果您能够了解如何处理将推令牌发送回服务器的设备,那么在iOS上编写apns服务器将非常简单。你应该阅读文档并尝试在托管设备上实现apns服务器。我认为主要问题实际上是,apns密钥将随iOS应用程序一起分发,这意味着任何人都可以随意获取和使用。是的,这将是另一个问题。有趣的想法。在典型情况下,iPhone服务器应用程序需要一次向20-30个客户端广播一个事件链。也许我可以将客户端令牌存储在AWS上的一个简单数据库或类似的数据库中,这样基础设施就很简单了。当iPhone应用程序直接向APN发出请求时,必须为每个设备发出一个请求。APNS还不支持批处理,甚至不支持广播。而且手机上的网络可用性也不是你应该依赖的。除了安全和网络问题之外,这是一个好主意;)