1

来自 Apple 的推送通知指南:

如果通知到达时目标应用程序未运行,则会播放或显示警报消息、声音或标记值。如果应用程序正在运行,iOS 会将其作为 NSDictionary 对象传递给应用程序委托。该字典包含相应的 Cocoa 属性列表对象(加上 NSNull)。

我已经在我的应用程序中实现了这一点,一切正常。如果应用程序处于焦点位置,则应用程序会直接获取消息。如果未激活,则会显示警报,当用户单击警报时应用程序启动,最后应用程序获取消息。

但是,如果在应用程序未激活时收到消息,是否有可能让 iOS 激活应用程序并在不显示任何消息或需要任何用户交互的情况下传递消息?

我喜欢这种行为,因为来自我的服务器的推送消息可能只对用户感兴趣,具体取决于她当前的位置。该应用程序的工作方式如下:当它启动时,它注册推送并告诉我的服务器:我在这个位置,希望在我附近发生有趣的事情时得到通知。稍后服务器会发送一条消息,但由于用户可能已经离开该区域,我希望应用程序再次检查用户的位置,如果她现在离原始位置太远,不要打扰用户。

我想可以有一个后台服务,每隔n分钟通知服务器当前位置,但我担心这会耗尽电池。

对此有什么想法吗?

4

1 回答 1

1

不幸的是,在 iOS 中,您不能在收到通知时直接打开您的应用程序。用户必须通过系统显示的警报选择自己打开它。

但是,使用后台位置并不是对电池不友好。这取决于您为CLLocationManager对象设置的位置精度。

有关位置准确性的所有信息都可以在这里找到:位置感知编程指南

在您的情况下,您可能希望使用显着的位置更改方法或kCLLocationAccuracyKilometer准确性。

这是一个很好的入门教程:iOS 多任务处理:后台位置

希望这会有所帮助。

于 2013-02-28T11:52:31.153 回答