iOS中的地理位置通知

时间:2012-02-24 00:39:30

标签: ios core-location uilocalnotification

我想在iOS中实现地理位置通知,但只是在特定的日期和时间。

只有当用户位于特定位置且某个日期和时间时才会启动通知。

例如:用户在里约热内卢,现在是12点。

是否有人知道如何合并这两个条件以启动通知?

3 个答案:

答案 0 :(得分:0)

我所知道的内置任何东西 - 你必须自己编写逻辑代码。因此,您只需从CoreLocation获取地理更新,然后您可以创建一个计时器来为您提供时间更新,然后编写一些定期执行的逻辑,如果时间/地点符合您的业务规则,则触发通知。请注意,必须运行该应用才能完成此操作。您可以从外部服务器发送推送通知,但该服务器必须知道手机的位置,并且您的应用必须告知它。

这有帮助吗?

答案 1 :(得分:0)

只要位置更新先于先例,这似乎可以优雅地完成。

使用此CoreLocation startMonitoringSignificantLocationChanges

要获取有关位置的更新,这些更新将能够在后台启动您的应用(如文档中所述)。然后,在"应用程序中:didFinishLaunchingWithOptions" AppDelegate的方法,包括你的逻辑,用于检查是否是发送通知的正确时间(通过检查CoreData中的内容或其他方式)。

不应该需要定期检查来创建计时器。让CoreLocation处理事件的入口点,因为它会在适当的位置在后台启动您的应用程序。

答案 2 :(得分:0)

这很简单。我假设您熟悉CLLocationManagerMKReverseGeocoder类。为了您的目的,仅监控重要的位置变化可能会很好(即使有时只发生移动公里)。它可以帮助您节省设备的电池电量。

因此,对于CLLocationManager's委托,您可以使用一种名为locationManager:didUpdateToLocation:fromLocation的方法。您需要做的就是在此使用反向地理编码,根据实际位置使用MKReverseGeocoder类确定实际城市的名称。此外,您必须检查设备上的本地时间,匹配两者,并采取相应措施(例如,设置本地通知以从后台唤醒应用程序)。