用户移动时iOS会收到通知

时间:2014-12-03 17:29:14

标签: ios iphone core-location

我一直在苦苦寻求从BT设备定期检索信息的方法。我的蓝牙设备通常位于车辆中,所以我的问题是它是否可以使用说...(如果用户旅行> 10km / h)来运行任务。或者在主要地点变更。

是否有可能获得一个真正的课程位置,我可以使用它来获得用户移动的一般概念?我只需要每隔几天触发一次(当用户开车时)。初始设置后,用户永远不会与我的应用互动。

感谢。

实施cmyr的建议:

CLLocationManager *locationManager;
int badge_count = 0;
- (void)startSignificantChangeUpdates
{
    // Create the location manager if this object does not
    // already have one.
    if (nil == locationManager)
        locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate = self;

    locationManager.pausesLocationUpdatesAutomatically = YES;

    locationManager.activityType = CLActivityTypeAutomotiveNavigation;

    [locationManager requestAlwaysAuthorization];

    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
    locationManager.distanceFilter = 500; // meters

    [locationManager allowDeferredLocationUpdatesUntilTraveled:501 timeout:-1];
    [locationManager startMonitoringSignificantLocationChanges];
    [locationManager startUpdatingLocation];
}
// Delegate method from the CLLocationManagerDelegate protocol.
- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations {
         badge_count++;
         [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge_count];
         NSLog(@"Location Event WOOT!");
     }

不幸的是我无法触发事件。我已将位置更新添加到应用程序plist。

上面的代码包含在我的app delegate.m文件

1 个答案:

答案 0 :(得分:2)

Core Location有一组API专门用于此用例,Apple称之为Significant Location Change Monitoring

来自文档:

  

重要更改位置服务仅在设备位置发生重大变化(例如500米或更长)时才会提供更新。

此API仅在您行驶指定距离时更新您的位置。它不提供持续更新。如果您需要不断更新,则必须使用标准位置服务。