首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在后台轮询服务器的正确方法

在后台轮询服务器的正确方法
EN

Stack Overflow用户
提问于 2010-10-27 19:46:19
回答 2查看 7.5K关注 0票数 17

假设这是可能的,我希望我的iOS应用程序在后台时轮询服务器(即,本质上,每30分钟检索一次网址的内容,如果其中包含一些“有趣的”内容,则通知用户),本质上类似于内置邮件客户端在不使用推送通知时的工作方式。

现在,根据我到目前为止的阅读(我是一个有经验的程序员,但不熟悉iOS),我认为可能有两种可能的方法来做到这一点:

  • 方法1:在applicationDidEnterBackground:中,启动一个执行周期性polling;

  • Method 2的后台任务:向您自己的应用程序发送一个对用户没有可见文本的UILocalNotification,但它只是用来在X分钟内唤醒您的应用程序进行轮询(然后给自己发送另一个通知,以备下次使用)。

我在苹果的Scheduling, Registering, and Handling Notifications文档中看到,他们实际上似乎有一个示例usign方法1(他们的“聊天”示例,清单2-2)。但令人惊讶的是,这种方法似乎只是坐在一个连续的循环中进行轮询,没有中间的睡眠;在我更熟悉的平台上,这是不可取的,并且会消耗CPU。

所以我的问题本质上是:-方法2是可能的吗(或者UILocalNotification总是给用户带来一个可见的警告,这不是我想要的),如果是这样,它是推荐的方法吗?-如果是方法1,苹果的“聊天”例子坐在一个连续的循环中真的可以吗(例如,iOS配给CPU,所以这不是一个问题),如果不是,在iOS中是什么方式告诉后台进程“睡眠X秒/分钟”?如果苹果的连续循环无论出于什么原因都是可以的,那么如何对轮询之间的间隔进行计时?

注意:我很欣赏能够在后台运行本质上是iOS 4的一个特性。如果我的应用程序只能在iOS 4中运行,我并不介意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-27 20:10:40

iOS4的多任务特性中没有介绍您想要做的事情。只有几种类型的应用程序允许在后台长时间(超过10分钟)运行,通用网络应用程序不在其中。

然而,并不是所有的都失去了。你能做的,我相信你应该做的就是使用推送通知。在你的服务器上,你连接到苹果的推送通知服务,用户注册了推送通知,你要么知道什么是有趣的数据,要么他们会告诉你。当数据可用时,您可以通过推送通知立即将其发送给用户。

它提供了更好的用户体验,并且您的应用程序不需要在后台运行。iOS将处理推送通知的传递。如果他们在收到通知时滑动解锁手机,你的应用程序就会打开,这时你就可以在你的应用程序中加载有用的信息。

您的方法1不会长期有效,即使您设法暂停输入一段时间,这就是原因:启动后台任务运行任务不超过10分钟,除非您是允许保持运行的三种类型的应用程序之一。10分钟后,操作系统将暂停您的操作。

你的方法2根本不会起作用。所有本地通知都会向用户显示警报视图。

票数 14
EN

Stack Overflow用户

发布于 2010-10-27 20:13:06

假设这是可能的...

不幸的是,这是一个错误的假设(!)。

你不能使用iPhone上的“多任务”来做这件事,因为它只允许某些类型的后台处理(GPS,VoIP,音乐)。要做你想做的事情,你需要在服务器上做这项工作,并使用推送通知。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4032829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档