【问题标题】:XCode iDevice app - How to listen for message/request from server?XCode iDevice app - 如何监听来自服务器的消息/请求?
【发布时间】:2013-05-10 10:34:20
【问题描述】:

我有一个项目,我需要能够将消息从运行 Web 服务的服务器发送到特定的 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在 1 分钟内(在某些情况下为几秒钟)向 iDevice 发送不同的消息,据我在其他线程中阅读,这根本不可能,因为 Apple 的服务器如何处理 ASPNS。

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

【问题讨论】:

    标签: ios objective-c xcode web-services


    【解决方案1】:

    您的方案似乎与 APPLE PUSH NOTIFICATION (APN) 非常相似。

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

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

    Refer this link

    您已经拥有但可以使用此代码来识别 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 的一件事 - 可靠性以及 Apple 服务器在超时时如何转储通知。您是否知道是否存在任何关于未交付 APNS 百分比的统计数据,因为 APNS(服务器->iDevice 通信)对于我的应用程序至关重要。
    • 我知道验收的工作原理,但我不确定 APN 是否是最佳解决方案,基于其他开发人员的经验。我将进一步调查 APN,稍后再讨论这个问题。
    【解决方案2】:

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

    我决定使用 tcp 通信,因为我的项目只会在本地网络中使用。这显然意味着 iDevice 上的功耗会增加,但可靠性对项目而言更为关键。

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2013-08-23
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多