【问题标题】:How to receive async network message while the iphone app is running in backgroundiphone应用程序在后台运行时如何接收异步网络消息
【发布时间】:2011-06-03 11:56:02
【问题描述】:

我有一个 iphone 应用程序从服务器接收网络消息。应用在前端运行时就可以了。

但是,当应用程序在后台运行时,应用程序不会收到网络消息。我把它带回 frondend 后,它就开始接收了。

如何让应用在后台运行也能接收网络消息?

谢谢。

【问题讨论】:

    标签: iphone cocoa-touch networking background


    【解决方案1】:

    您在后台有两个网络连接选项:

    • 推送通知。该应用程序没有运行,但您的服务器可以请求发送通知,该通知随后将发送到 iPhone,提示用户启动您的应用程序,然后该应用程序可以通过常规请求从您的服务器更新自身。

    • 后台网络调用。您的应用可以请求在后台保持线程处于活动状态以完成网络活动。您可以使用它在您的应用关闭时发送请求以与您的服务器签入。

    【讨论】:

    • 如何进行后台网络调用?有参考链接吗?谢谢。
    • 将系统注册为后台应用程序以保持线程运行,并以与NSURLRequest 等相同的方式进行操作。
    【解决方案2】:

    首先查看这个帖子:iphone - Connecting to server in background

    其次,具体来说,当您的应用程序在后台并被操作系统冻结时,它将无法访问互联网,因此您的应用程序不会听到任何来自异步请求的回调。

    三、一种可能的策略:

    • 当您的应用要切换到后台时,请立即向您的服务器发布请求,以便您的服务器有关于您的应用最新状态的更新记录
    • 当您的应用要切换回前台时,再次通过发布请求让您的服务器知道这一点
    • 这可能会发生,您的应用程序仍在后台,而您的服务器只需要访问它或向它发送任何消息。在这种情况下,请尝试 Apple 提供的 APNs(Apple Push Notification Service)。它是免费且易于实施的。一旦您为您的应用设置 APN,可能的结果是,用户从您的服务器收到一条推送消息,然后决定将您的应用放回前台。虽然这仍然完全取决于用户,但机会很大。

    【讨论】:

      【解决方案3】:

      我不是 iphone 开发人员,但对我来说,对于所有后台应用程序,所有网络消息都应该推送到苹果服务器,然后再推送到手机。没有像 Android 那样的服务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多