내 앱은 위치 및 가속도계 정보를 수집하고 사용자가 요청하면 계속해서 백그라운드에서 가속계 정보를 수집합니다. 가속도계 정보는 약 100Hz에서 수집되며 고속으로 수집하는 것이 중요합니다. 앱은 이전 버전의 iOS에서는 제대로 작동했지만 iOS 10에서는 실패했습니다. 백그라운드에서 가속도계 정보를 계속 수집 할 방법을 찾고 있습니다.iOS에서 백그라운드에서 위치 및 가속도계 업데이트
사용 된 방법은 Receive accelerometer updates in background using CoreMotion framework의 그것과 유사합니다. 위치 업데이트 체크,
motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = 1.f/trialFrequency;
[[NSOperationQueue mainQueue] setMaxConcurrentOperationCount: 10];
[motionManager startAccelerometerUpdatesToQueue: [NSOperationQueue mainQueue]
withHandler: ^(CMAccelerometerData *accelerometerData, NSError *error) {
// Flag any error.
if (error) {
NSLog(@"error getting accelerometer update: %@", error);
}
<<<process data>>>
}
];
대상, 기능, 배경 모드 :
latitude = 0.0;
longitude = 0.0;
altitude = 0.0;
horizontalAccuracy = -1.0;
verticalAccuracy = -1.0;
if (locationManager == nil && [CLLocationManager locationServicesEnabled]) {
self.locationManager = [[CLLocationManager alloc] init];
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
if (status == kCLAuthorizationStatusNotDetermined) {
[locationManager requestWhenInUseAuthorization];
}
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;
[locationManager startUpdatingLocation];
}
내가 구현을 locationManager : didUpdateLocations :
- (void) locationManager: (CLLocationManager *) manager didUpdateLocations: (NSArray *) locations {
printf("locationManager:didUpdateLocations:\n");
CLLocation *location = locations.lastObject;
latitude = location.coordinate.latitude;
longitude = location.coordinate.longitude;
altitude = location.altitude;
horizontalAccuracy = location.horizontalAccuracy;
verticalAccuracy = location.verticalAccuracy;
}
내가 모션 관리자를 시작 나는 위치 관리자를 시작 .
iOS 9 이전 버전에서는 동작 정보가 약 100Hz의 속도로 문제없이 기록되지만 iOS 10에서는 앱이 배경에 들어가 자마자 동작 정보가 중지됩니다.
모션 정보를 iOS 10에서 백그라운드로 계속 유지할 수있는 방법이 있습니까?
나는 애플과 버그 리포트를 제출하는 제안. iOS 10은 센서의 백그라운드 사용과 관련하여 다소 이상한 변화를 일으키며, 이는이 중 하나 일 수 있습니다. 그리고 이전에 작동했다면 어떤 경우에도 정당한 사용 사례가 있습니다. – matt