在ios中最适合这样的任务的设计模式是什么?
有一些我想到,但我没有经验.
>可能推送通知,当有新版本可用时,服务器需要将消息推送给所有客户端.
>或者,有什么类似于Android的Service可以帮助吗?
>或者,每次应用程序启动(或转到前台)时,只需ping服务器,看看是否有新功能.
>或者,每次应用程序启动ping服务器,并在下一个12h添加一个计时器,以防该应用仍然在前台.
>或者,每次应用程序启动时,请检查一个首选项值,如果服务器最后一次ping超过12小时,那么现在就ping它.然后保存这个ping时间.
选项1可能在服务器上更加沉重,可能会更复杂的实现(考虑ios newbe),但可能是真正的后台更新的唯一选项.但是即使如此,我仍然不希望用户对一些低级数据更新b / wa客户端和服务器做出反应(这就是它是什么),因此除非推送通知可以直接转到应用程序并执行没有用户干预的东西,那么这个选项不会飞.
选项3-5都是可能的,听起来不太好,但是只有在应用程序处于前景时才可以使用.
从我所知道的,后台应用程序只能播放音乐,获取位置更新或语音更新.甚至连this hack都有无声的声音,试图逃避这个限制. (并没有批准到商店).
或许限制在很大程度上是有益的,所以如何通过规则进行游戏,并能够实现定期的服务器ping(或者更通常地解决周期性同步b / w客户端和服务器的问题,即使应用程序在bg )?
谢谢
解决方法
要记住的一件事是,应用程序不应该使用任何手机的数据计划配额,而不会让用户知道它正在下载东西.一些应用程序都是关于下载Twitter客户端的内容,因此应用程序的性质告诉用户应用程序正在使用数据计划.其他应用程序,如绘图程序,几乎没有明确的下载需要,所以应该通知用户需要下载.
因为苹果公司不允许开发人员在后台进行下载,所以使用iOS的用户将会受到等待他们的应用程序下载更新的数据的训练.在等待下载时,改善用户体验的典型方式至少显示一个微调器,让用户知道应用程序正在运行.为了更好地改进界面,将下载内容发送到另一个线程,并允许人们继续使用其余的应用程序.它们可以与旧数据进行交互,也可以使用不需要更新的应用程序部分.
苹果公司不会为程序员提供一种在大多数应用程序类型的背景下下载新内容的机制.根据苹果的公告,iOS 5的书报摊功能将允许订阅在后台更新.也许将来我们的开发人员将有更多的后台下载选项.
我在应用商店中有一个使用方法5的应用程序,另一个在使用方法3的作品中.
如果人们想要尽快知道新的数据可用,我会使用推送通知(方法1).这将取决于这个话题.
iOS没有任何类似Android的服务(方法2)
我有一个应用程序,每次启动应用程序时检查RSS提要的消息(方法3).这个应用程序主要是做其他的事情,但是在开始视图中显示Feed.由于该应用程序是一个简单的实用程序,可帮助人们找到特定的解决方案,RSS提要是辅助的.
我喜欢方法4中的计时器想法.如果要给人一个机会批准下载,定时器可以弹出警报视图,然后等待.这样应用程序实际上并不下载某些东西,如果设备只是在前台与你的应用程序坐在一起.
我在目前可用的应用程序中实现方法5有一点变化.它仅为许多视图中的一个下载数据.每次访问此视图时,都会检查存储的时间,以查看是否应下载新的数据.然后它要求许可.