我希望我的应用程序能够每12小时发送一个HTTP请求到服务器,即使应用程序当前未运行或在后台运行,也能获取一个包含版本号的小文件。如果服务器上的版本高于客户端上的版本,则下载一些文件到磁盘,以便下次启动应用程序时会在磁盘上找到新内容。在iOS中,哪些设计模式最适合这样的任务?
我想到了几个,但经验不足:
1. 可能是推送通知,当有新版本可用时,服务器需要向所有客户端推送消息。 2. 或者,是否有类似于Android的Service可以帮助? 3. 或者,每次应用程序启动(或进入前台)都会与服务器进行连接,查看是否有任何新内容。 4. 或者,每次应用程序启动都会与服务器进行连接,并添加一个定时器,以便在应用程序仍处于前台时再次连接服务器。 5. 或者,每次应用程序启动时,检查首选项值,如果上次连接服务器的时间超过12小时,则立即连接服务器。然后保存此连接时间。
Option 1可能会对服务器造成更大的负担,而且实现起来可能更加复杂(考虑到一个iOS新手),但这可能是真正后台更新的唯一选择。但即使如此,我仍然不希望用户必须对客户端和服务器之间的某些低级数据更新做出反应(这就是它的作用),所以除非推送通知可以直接发送到应用程序并在没有用户干预的情况下执行某些操作,否则这个选项不可行。
选项3-5都是可能的,并且听起来并不太困难,但它们只能在应用程序处于前台时工作。
据我所知,后台应用程序只能播放音乐、获取位置更新或VoIP更新。甚至有这个黑客使用静默声音试图逃避这种限制。(并未获得批准进入商店)
也许现有的限制是有好处的,那么我该怎样遵守规则并能够实现定期的服务器ping(或更一般地解决客户端和服务器之间的周期性同步问题,即使应用程序在后台运行)?
谢谢。
我想到了几个,但经验不足:
1. 可能是推送通知,当有新版本可用时,服务器需要向所有客户端推送消息。 2. 或者,是否有类似于Android的Service可以帮助? 3. 或者,每次应用程序启动(或进入前台)都会与服务器进行连接,查看是否有任何新内容。 4. 或者,每次应用程序启动都会与服务器进行连接,并添加一个定时器,以便在应用程序仍处于前台时再次连接服务器。 5. 或者,每次应用程序启动时,检查首选项值,如果上次连接服务器的时间超过12小时,则立即连接服务器。然后保存此连接时间。
Option 1可能会对服务器造成更大的负担,而且实现起来可能更加复杂(考虑到一个iOS新手),但这可能是真正后台更新的唯一选择。但即使如此,我仍然不希望用户必须对客户端和服务器之间的某些低级数据更新做出反应(这就是它的作用),所以除非推送通知可以直接发送到应用程序并在没有用户干预的情况下执行某些操作,否则这个选项不可行。
选项3-5都是可能的,并且听起来并不太困难,但它们只能在应用程序处于前台时工作。
据我所知,后台应用程序只能播放音乐、获取位置更新或VoIP更新。甚至有这个黑客使用静默声音试图逃避这种限制。(并未获得批准进入商店)
也许现有的限制是有好处的,那么我该怎样遵守规则并能够实现定期的服务器ping(或更一般地解决客户端和服务器之间的周期性同步问题,即使应用程序在后台运行)?
谢谢。