2014-03-12 4 views
0

내 경우, 백그라운드에서 알림에 응답하는 것이 마침내 가능했던 새로운 API 년대에, 궁금해서, 나는 다음과 같은 관찰자가 :백그라운드에서 EKEventStoreChangedNotification 수신 및 응답 하시겠습니까? iOS7에있는 경우

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(storeChanged:) 
              name:EKEventStoreChangedNotification 
              object:eventStore]; 

내가 통지를 완벽하게 그러나 수신하고를 선택기를 호출 할 수 있도록 응용 프로그램을 실행해야합니다. 나는 응답을 통해 브라우징했는데 그들이 가능한 것은 아니지만 그들이 iOS7을 구체적으로 언급하는지 확실하지 않다고 말한다.

의견이 있으십니까?

감사합니다.

답변

5

EKEventStoreChangedNotification은 앱이 포 그라운드에있을 때만 실행됩니다. 그러나 백그라운드에서 storeChanged : 메소드를 호출하여 UI가 이미 포어 그라운드로 다시 업데이트되도록하려는 경우 백그라운드 가져 오기 기능을 앱에 추가해야합니다. 기본 간격은 결코로 응용 프로그램 위임 didFinishLaunchingWithOptions 방법에

<key>UIBackgroundModes</key> 
<array> 
    <string>fetch</string> 
</array> 

는 라인

[application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum]; 

이 실제로 응용 프로그램을 보장 당신의 배경 가져 오기 호출을 추가합니다. 이 최소 키는 iOS가 백그라운드 가져 오기 메소드를 호출 할 때 처리하는 것을 보장하는 키입니다. 가능한 한 자주 발사하지 않으려면 자신의 최소 간격을 설정할 수 있습니다.

마지막으로 배경을 구현하는 앱 대리자 방법을 가져 오기 : 디버그에서 디버깅하는 동안

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
[self storeChanged:nil]; 
completionHandler(UIBackgroundFetchResultNewData); 
} 

당신은 배경이 가져 오기 시뮬레이션> 엑스 코드에서 테스트 할 수 있습니다.

0

첫 번째 앱이 배경에있을 때 백그라운드 작업 API를 사용하여 메소드를 백그라운드로 실행 한 후에 만 ​​메소드를 실행할 수 있습니다 (너무 오래 걸리지 않는 한 보통 ~ 10 분이 소요됩니다). 최대 허용 시간). 이것은 iOS7의 모든 버전에도 적용됩니다.

자세한 내용은 question을 읽으십시오.

App States and Multitasking Guide by Apple은 백그라운드 처리에 대한 자세한 설명을 제공 할 수 있습니다.