XCode iDevice应用程序 – 如何侦听来自服务器的消息/请求?

我有一个项目,我需要能够从运行Web服务的服务器发送消息到特定的iDevice。 我不知道如何做到这一点,所以任何帮助,非常感激。

场景:我有一个networking服务,从一个iDevice(也可以是Mac或PC,甚至是一个Android设备)接收一些消息。 根据这个消息的内容,我需要能够从Web服务发送消息到另一个iDevice(我知道具体的iDevice的IP地址)。 我知道如何使用URLRequests将消息从iDevice发送到服务器,并从服务器收集响应。 原则上,我可以每10秒向服务器发送一个请求,询问服务器是否有任何新的消息发送给发送者(发送请求的iDevice),但是我确信这不是正确的方法。 有没有办法让iDevice监听特定端口上的服务器通信,以便iDevice只有在从服务器接收到消息来做某事时才会执行某些活动,例如,在应用程序中显示消息以侦听服务器通信?

我想我需要使用类似于用于iMessage的技术,但是这是如何完成的?

我正在使用XCode 4.6.2,iOS 6.1。

编辑:只是为了澄清我的需要更多一点:APNS似乎是太不可靠(至less这是我已经读过关于APN的其他线程),因为在某些情况下,Web服务可能需要发送2个不同的消息一个iDevice在1分钟之内(在某些情况下秒),而据我在其他线程阅读,这是不可能的,因为苹果的服务器如何处理ASPNS。

我正在开发的应用程序只需要在应用程序处于活动状态时从服务器接收消息 – 有没有办法,不使用APN来执行此操作,例如,让应用程序监听特定端口上的通信?

您的scheme与APPLE PUSH NOTIFICATION(APN)非常相似。

理想情况下,你的服务器端应该写一个代码,如果服务器端有任何改变,需要通知所有关联的设备。

然后您的服务器应该发布通知苹果服务器,然后将通知所有相关的设备。

参考这个链接

你已经有,但可以使用此代码来识别iOS / Mac设备

NSString *identifierString = [[NSUserDefaults standardUserDefaults] objectForKey:@"myID"]; if (!identifierString) { CFUUIDRef identifier = CFUUIDCreate(NULL); identifierString = (NSString*)CFUUIDCreateString(NULL, identifier); [[NSUserDefaults standardUserDefaults] setObject:identifierString forKey:@"myID"]; } NSLog(@"%@",identifierString); 

此代码一直运行,直到应用程序的生命周期只。

经过一番search之后,我决定不使用APNS,因为人们似乎有着各种各样的经验。 我不能使用APNS,因为我的项目需要100%的可靠性和与服务器的即时通信。

我决定使用TCP通信,因为我的项目只能在本地networking中使用。 这显然意味着更多的设备功耗,但可靠性更关键的项目。