我一直在苦苦寻求从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文件
中答案 0 :(得分:2)
Core Location有一组API专门用于此用例,Apple称之为Significant Location Change Monitoring。
来自文档:
重要更改位置服务仅在设备位置发生重大变化(例如500米或更长)时才会提供更新。
此API仅在您行驶指定距离时更新您的位置。它不提供持续更新。如果您需要不断更新,则必须使用标准位置服务。