문제점을 해결하기 위해 노력하고 있습니다. HKObserveryQuery
을 설치했으며, 저의 새로운 데이터를 수집합니다.HKObserverQuery가 무작위로 두 번 연속 호출되었습니다.
그러나 문제는 Health 응용 프로그램에 수동으로 추가 한 후 Health 응용 프로그램으로 돌아가서 항목을 삭제할 때 가끔 두 시간을 매우 가깝게 설정했음을 알리는 HKObserverQuery
입니다. 이 관찰자를 사용하여 나중에 일부 데이터를 업로드하고 복제본을 원하지 않기 때문에 해결하려고합니다.
제공되는 도움에 감사드립니다. 코드 :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setup];
return YES;
}
- (void)setup
{
if ([HKHealthStore isHealthDataAvailable])
{
self.healthStore = [[HKHealthStore alloc]init];
NSSet *readTypes = [NSSet setWithObject:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]];
[self.healthStore requestAuthorizationToShareTypes:nil
readTypes:readTypes
completion:^(BOOL success, NSError *error)
{
if (!error && success)
{
[self observeHR];
[self.healthStore enableBackgroundDeliveryForType:
[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]
frequency:HKUpdateFrequencyImmediate withCompletion:^(BOOL success, NSError *error){}];
}
}];
}
}
- (void)observeHR
{
HKObserverQuery *query = [[HKObserverQuery alloc]initWithSampleType:[HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]
predicate:nil
updateHandler:^(HKObserverQuery *query, HKObserverQueryCompletionHandler completionHandler, NSError *error)
{
if (!error)
{
// Randomly called twice *VERY* close together
NSLog(@"Query");
[self queryWithCompletionHandler:completionHandler];
}
else
{
if (completionHandler)
{
completionHandler();
}
}
}];
[self.healthStore executeQuery:query];
}
콘솔 출력, 시간 확인 : 이것은 건강 앱에서 하나의 항목 만 삭제할 때 발생합니다. 잘못된 것입니다.
2014-12-29 16:50:20.121 TestApp[174:5674] Query
2014-12-29 16:50:20.124 TestApp[174:5674] Query
왜 이것이 필요한지 궁금합니다. 동일한 문제가 발생하고 스토리지 및 처리 시스템에 과도한 부하가 발생하지 않도록하고 싶습니다. 이중 발사의 원인을 찾았습니까? – myusuf3
이 두 가지 쿼리 실행 문제에 대한 해결책이 무엇입니까? 나는 나의 경우에 동일한 문제에 직면하고있다. 가능한 빨리 공유하십시오. – Aks