2013-05-10 78 views
0

我有一个项目,我需要能够将消息从运行Web服务的服务器发送到特定的iDevice。我不知道如何做到这一点,所以任何帮助非常感谢。XCode iDevice应用程序 - 如何侦听来自服务器的消息/请求?

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

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

我正在使用XCode 4.6.2,iOS 6.1。

编辑:只是为了更清楚我的需求:APNS似乎太过于不可靠(至少这是我在其他有关APN的线程中读到的),因为在某些情况下,Web服务可能需要发送2分钟内向iDevice发送不同的消息(在某​​些情况下为秒),并且据我在其他线程中阅读,由于Apple的服务器如何处理ASPNS,这根本无法实现。

我开发的应用程序只需要在应用程序处于活动状态时从服务器接收消息 - 是否有任何方式(不使用APN)来执行此操作让应用程序监听特定端口上的通信?

回答

0

经过一番搜索之后,我决定不使用APNS,因为好像人们对它有着各种各样的体验。我不能使用APNS,因为我的项目需要100%的可靠性并与服务器进行即时通信。

我决定使用tcp通信,因为我的项目只能用于本地网络。这显然意味着iDevices会消耗更多的能源,但可靠性对该项目更为重要。

1

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

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

然后你的服务器应该发布通知苹果服务器,然后将通知发送到所有关联的设备。

Refer this link

你已经拥有,但可以使用此代码来识别的iOS/Mac的deivce

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); 

此代码的工作,直到只有应用程序的生命周期。

+0

非常感谢您的快速回复。 APNS听起来很有希望,但我非常担心有关APNS的一件事 - 可靠性以及Apple服务器在超时时如何转储通知。你是否知道是否有任何有关APNS百分比没有交付的统计数据,因为APNS(服务器 - >设备通信)对于我的应用程序将非常重要。 – 2013-05-10 11:13:23

+0

我知道验收是如何工作的,但我不确定APN是否是最好的解决方案,基于其他开发人员的经验。我将进一步调查APN,稍后再回到这个问题。 – 2013-05-10 22:23:01

相关问题