繁体   English   中英

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

[英]XCode iDevice app - How to listen for message/request from server?

我有一个项目,需要从运行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。

编辑:只是为了澄清我的需求:APNS似乎太不可靠(至少那是我在其他线程中看到的关于APN的内容),因为在某些情况下,Web服务可能需要向其中发送2条不同的消息在1分钟(有时是几秒钟)内创建一个iDevice,据我在其他线程中所读的内容,这完全是不可能的,因为苹果的服务器如何处理ASPNS。

我正在开发的应用程序仅在应用程序处于活动状态时才需要从服务器接收消息-有没有办法(例如,使应用程序侦听特定端口上的通信?)而不使用APNs?

您的情况似乎与APPLE PUSH通知(APN)相似。

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

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

引用此链接

您已经有,但是可以使用此代码来识别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上的更多功耗,但是可靠性对项目而言更为关键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM