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

Ios XCode iDevice应用程序-如何侦听来自服务器的消息/请求?,ios,objective-c,xcode,web-services,Ios,Objective C,Xcode,Web Services,我有一个项目,需要能够从运行web服务的服务器向特定的iDevice发送消息。我不知道怎么做,所以非常感谢您的帮助 场景:我有一个web服务,它接收来自iDevice(也可以是Mac或PC,甚至是Android设备)的一些消息。根据此消息的内容,我需要能够将消息从web服务发送到另一个iDevice(我知道特定iDevice的IP地址)。我知道如何使用URLRequests从iDevice向服务器发送消息并从服务器收集响应。原则上,我可以每隔10秒向服务器发送一个请求,询问服务器是否有任何新消息

我有一个项目,需要能够从运行web服务的服务器向特定的iDevice发送消息。我不知道怎么做,所以非常感谢您的帮助

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

我想我需要使用类似于iMessage的技术,但是这是如何做到的呢

我使用的是XCode 4.6.2,iOS 6.1

编辑:只是想进一步澄清一下我的需求:APN似乎太不可靠(至少我在其他关于APN的帖子中读到了这一点),因为在某些情况下,web服务可能需要在1分钟内(在某些情况下是几秒钟)向iDevice发送2条不同的消息,据我在其他帖子中读到的,这根本不可能,因为苹果的服务器是如何处理ASPN的


我正在开发的应用程序只需要在应用程序处于活动状态时从服务器接收消息-有没有办法不使用APN来做到这一点,例如让应用程序侦听特定端口上的通信?

您的场景似乎与APPLE推送通知(APN)非常相似

理想情况下,您的服务器端应该以这样的方式编写代码:如果服务器端有任何更改,则需要通知所有相关设备

然后,您的服务器应发布通知Apple server,Apple server随后将向所有相关设备发送通知

您已经有但可以使用此代码识别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);

此代码仅在应用程序的生命周期内有效。

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


我已经决定使用tcp通信,因为我的项目只在本地网络中使用。这显然意味着iDevices将消耗更多的电力,但可靠性对项目来说更为重要。

非常感谢您的快速回复。APNS听起来很有前途,但我非常关心APNS的可靠性,以及苹果服务器在超时时如何转储通知。你知道有没有关于APN未交付百分比的统计数据,因为APN(服务器->iDevice通信)对我的应用程序至关重要。我知道验收是如何进行的,但根据其他开发人员的经验,我不确定APN是否是最佳解决方案。我将进一步研究APN,稍后再回到这个问题。