设计iPhone iOS4应用程序行为:在后台运行与终止应用程序

grz*_*aks 7 iphone application-design multitasking ios4

我们正在为汽车司机开发iPhone GPS应用程序.

您可能知道,iOS4引入了多任务处理,因此我们的应用程序可以在后台运行 - 事实就是如此.这是其功能的一部分.

问题在于在iOS4上关闭应用程序的标准方法.以下是两种情况:

1)用户想要将应用程序放到后台:

通常,在iPhone iOS4上,它就像按"主页"按钮一样简单.

2)用户想关闭应用程序(即到达目的地点后):

标准iPhone iOS4程序如下:

  • 按"主页"按钮 - 应用程序进入后台
  • 按两次"主页"按钮 - 显示正在运行的应用程序列表
  • 点击并按住其中一个应用程序图标 - 每个图标上都会显示"摇晃"和" - "符号
  • 点击用户希望终止的应用程序图标上的" - "符号

用户每次到达某处(例如,每天两次)都必须终止我们的申请,以节省他的电池.如果他不这样做 - GPS会很快耗尽所有电池电量.此外,我们无法在后台运行时禁用GPS,因为我们需要主要应用程序功能的精确位置信息.

当然,您无法更改应用程序中"主页"按钮的行为(即可接受AppStore).此外,我认为将预期行为改为与iPhone平台上的其他应用程序完全不同的东西并不是一个好的解决方案.

你觉得怎么样?你知道任何好的解决方案吗?我们有一个想法,但我不想向你提出任何建议.

我们的解决方案非常简单:只需在屏幕右上方显示小的"x"按钮即可.点击它会终止应用程序(可能在一些确认问题之后).

这个解决方案有一个很大的优势:它不会改变默认的系统行为 - 用户意识到iOS4多任务使用仍然可以按下"主页"按钮在后台运行应用程序并以iPhone方式关闭它.

你怎么看?

luc*_*ius 6

Apple建议您这样做(iPhone App编程指南):

应用程序只能注册重要的位置更改.(推荐)对于带有蜂窝无线电的设备,iPhone OS 4及更高版本中提供了重要更改位置服务.它提供了一种接收位置数据的低功耗方式,强烈建议使用.仅当用户的位置发生显着变化时,才会提供新的位置更新.如果在运行此服务时应用程序被挂起,则新的位置更新将导致应用程序在后台被唤醒以处理它们.同样,如果在运行此服务时终止应用程序,则系统会在新位置数据可用时自动重新启动应用程序.

您是否通过调用startMonitoringSignificantLocationChangesCLLocationManager的方法尝试使用它?

退出应用程序应该只作为最后的手段.您可以在不使用应用程序时关闭位置服务.您可以调用stopUpdatingLocationCLLocationManager将其关闭.

- (void)stopUpdatingLocation

只要您的代码不再需要接收与位置相关的事件,就应该调用此方法.当没有客户端需要位置数据时,禁用事件传递使接收器可以选择禁用适当的硬件(从而节省功率).您始终可以通过再次调用startUpdatingLocation方法重新启动位置更新的生成.


iwa*_*bed 1

由于您需要在后台运行以实现定位目的,并且 Apple 不允许您终止自己的应用程序,因此用户必须了解他们需要自行终止应用程序以节省电量。

一个快速的解决方案是在到达目的地后关闭定位服务。您甚至可以提醒用户发生这种情况,一旦他们点击“确定”按钮,您就可以阻止它运行和/或在应用程序暂停时在后台运行。