2011-11-04 3 views
0

가끔 작업하는 앱이 일시 중지 모드에서 나올 때 iOS에서 저장 한 알림에 응답하지 않도록해야합니다. 앱이 일시 중지되었습니다. 내 응답 코드가 실행되지 않을 것 같은 곳에서 취소를 수행 할 수있는 적절한 위치는 어디입니까?iOS NSNotification - 일시 중지 상태가되었을 때 안전하게 무시하는 방법

removeObserver를 적용하면 applicationWillEnterForeground가 트릭을 수행하기를 기대하지만 NSNotification 문서에서이 항목을 찾을 수 없습니다.

편집 : 나 시나리오의 세부 사항을 추가하자 :

나는 다음 7 일간의 범위에 대한 캘린더 이벤트에 대한 변경 사항을 확인 중이 야 응용 프로그램을. 두 번에 데이터 (requeries eventStore)를 새로 고칩니다. 1. NSNotification이 iPhone 캘린더에서 변경된 경우. 2. 7 일 범위가 변경 되었기 때문에 앱을 처음으로 새로 시작할 수 있습니다.

내가 겪고있는 디자인 과제는 두 시나리오가 동시에 true 인 경우입니다 (앱이 일시 중지되지 않고 다시 돌아가고 앱이 일시 중지 된 동안 캘린더 일정이 수정 됨). 이 경우 이벤트 저장소를 한 번만 다시 쿼리하려고합니다. 내 생각은, applicationWillEnterForeground에서 오늘의 첫 번째 출시 인 경우 앱에서 알림을 무시하거나 삭제하도록 알립니다. NSNotifications가이 경우 어떻게 작동하는지에 대한 내 가정을 잊어 버릴 수 있습니다. 어떤 지침이 좋을 것입니다!

답변

0

신고 센터에서 관찰자를 -applicationDidEnterBackground:으로 제거하지 않으시겠습니까?

그런 다음 다시 관찰을 시작할 수 있습니다 -applicationWillEnterForeground:.

+0

감사하지만 전성기 였지만 대부분의 경우 앱이 일시 중지 된 동안 알림이 필요합니다. 앱이 다시 활성화 될 때까지는 분명하지 않은 경우가 있습니다. – kris

0

일시 중지 된 상태에서 제공되는 NSNotifications는 무엇입니까? 백그라운드 작업을 실행하고 있습니까?

NSNotification에 응답하지 않는 것이 좋은 생각 인 경우를 생각할 수 없습니다. 다른 라우팅 메커니즘을 사용하는 것처럼 실제로는 다른 메시지와 비슷합니다.

UILocalNotification은 다른 문제입니다.

+0

David, 나는 시나리오를 추가했습니다. 나는 원래의 의견을 다루려고 노력하고있다. 나는 백그라운드 작업을 실행하고 있지는 않지만, 앱이 일시 중지 된 후에 전송 된 (또는 전송 시도 된) 모든 알림이 앱에 의해 (또는 다시 보내지는) – kris

+1

좋아요, 저는 EK에 익숙하지 않지만 앱이 실행되는 동안 수정에 대해 이야기합니다. 어느 쪽이 일시 중지 되었더라도 그렇지 않습니다. 그러나 설명서가 잘못되었다고 가정합니다. 다른 한편으로, 이것에 대해 걱정할 가치가있는 것이 있습니까? 7 일 동안 비용이 많이 들지 않습니까? 실제로 그 상태가 아직 설정되지 않은 경우, "업데이트해야하는"상태를 설정하고 약간 지연된 업데이트 (performSelector : withObject : afterDelay :)를 실행할 수 있습니다. –

+0

performSelector : withObject : afterDelay : 내 사례를 진행하는 방법처럼 보입니다. 여러 개의 EKEventChangeNotifications도 수집 할 수 있습니다 (앱이 최대 1 개만 수신 할 것으로 생각했습니다). 값이 비싼 작업이라면 두 번 실행하는 것이 좋을지 모르지만 EKevent의 데이터를 핵심 데이터에 저장하고 두 번 업데이트 한 다음 UI를 업데이트하는 관련 FRC를 핵심 데이터로 업데이트해야합니다. , 나에게 좋은 소리하지 않습니다. – kris