8

当您的应用程序未运行但用户在特定位置附近时仍然能够收到推送通知时,是否有可能。这将需要检查用户当前的纬度和经度(即使应用程序没有运行)。

如果可能,您能否就如何实现它提供一些指导?

4

4 回答 4

5

即使应用程序未运行,您也可以使用两种方法来跟踪用户位置:

  1. 重大地点变更服务。

    startMonitoringSignificantLocationChanges在 CLLocationManager 实例中调用该方法。这将有助于显着节省电力,但与下面的第二种方法相比,它不能提供高精度。

    如果您选择此方法,则无需设置location密钥。UIBackgroundModes

  2. 标准定位服务。

    startUpdatingLocation在 CLLocationManager 实例中调用该方法。这需要大量的设备功率,但它提供了更高的精度。请记住设置location密钥UIBackgroundModes以确保即使应用程序被终止,跟踪仍然有效。

您可以使用上述任何一种方法。我使用第一种方法结合区域监控来触发本地通知。

您可以查看以下 Apple 文档以获得更全面的解释和示例:

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html

于 2013-05-15T09:04:17.857 回答
3

即使应用程序根本没有运行,基于区域(CLRegion)的通知

好吧,这个答案不是很快,但 Apple 在 UILocalNotification 中引入了新概念。不需要发送推送通知,当用户进入/离开地理区域时,iOS 会自动显示本地通知CLRegion。从 iOS 8 及更高版本开始,我们可以根据位置而不是通过设置fireDate属性来安排本地通知。

    let localNotification = UILocalNotification()
    localNotification.alertTitle = "Hi there"
    localNotification.alertBody = "you are here"

    let region = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 4.254, longitude: 88.25), radius: CLLocationDistance(100), identifier: "")
    region.notifyOnEntry = true
    region.notifyOnExit = false
    localNotification.region = region       

    localNotification.timeZone = NSTimeZone.localTimeZone()
    localNotification.soundName = UILocalNotificationDefaultSoundName

    UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

以下是来自Apple的更多详细信息。

于 2016-02-03T08:17:46.810 回答
0

你需要做两件事:

  1. startMonitoringSignificantLocationChanges 与 CLLocationManager。那是在代码方面。您可能想收听通知,并使用您获得的信息做任何事情。但是,如果应用程序没有运行,除非您执行以下两项操作,否则您将不会获得此信息:
  2. 在 Capabilities 中:启用 BackgroundModes 和 Modes:位置更新。这样,我相信即使您的应用从非活动列表中滑落,您也将始终收到通知。

但是,用户仍然可以将其关闭(设置->常规->后台应用刷新)。

于 2014-02-20T23:35:12.180 回答
0

您可以在应用程序处于后台时执行此操作。首先..每当应用程序进入后台时调用 CLLocationManager deleagte。每当设备将获得新的纬度和经度.. 这个委托将被解雇。-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; 现在调用网络服务并更新您的当前位置。然后发送推送通知。

于 2014-11-19T09:52:21.430 回答