2013-08-14 2 views
2

로컬 알림 (또는 해당 문제에 대한 푸시)을 처리하는 여러 가지 상태를 처리하는 방법에 대한 확신이 전혀 없습니다. 시작 옵션과 로컬 알림을 올바르게 처리하는 중

은 (내가 틀렸다면 정정 해줘)까지 내가 그들을 이해로 서로 다른 시나리오입니다 :

을 수행합니다. 응용 프로그램 호출지고 전경

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{} 

에 있었고 : application.applicationState == UIApplicationStateActive

나. 응용 프로그램 호출지고 배경

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{} 

에 있었고 : application.applicationState == UIApplicationStateInactive

다. 응용 프로그램은 그렇게 종료되었습니다 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{} 

는 먼저 호출지고와 afterwords는 : application.applicationState == UIApplicationStateActive이 (가 didFinishLanching ...

후 약간의 시간이 활성화 된 이후 어디

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{} 

라는지고

각 시나리오에서 나는 다르게 행동해야합니다 :

. 앱이 포 그라운드에 있다면 에일 알림 영역을 표시하는 rt 및 사용자가 진행 버튼을 사용하여 경고를 닫으면 일부보기 제어기가 스택에 푸시됩니다.

b. 응용 프로그램이 배경에 있었고 사용자가 경고를 누른 경우 사용자가 경고를 누를 때 표시기가 의미를 따르기를 원하기 때문에 자동으로보기 컨트롤러를 스택에 푸시하고 싶습니다.

c. b와 동일한 시나리오. 사용자가 경고를 누르고 관련보기를 볼 것으로 예상합니다.

내 질문은 어떻게 navigationViewController에 관련 뷰를 푸시해야합니까? 포 그라운드에서 알림을받을 때 경고를 표시하는 방법은 무엇입니까?

문제는 시나리오 c가 시나리오 a를 포함한다는 것입니다. 이것은 didFinishlaunching이 호출 된 후 (즉, 알림을 처리했는지 여부는 신경 쓰지 않습니다.) 그런 다음 didRecieveLocalNotification이 호출되는 것입니다 (포 그라운드에서 알림을받는 것처럼). 그러나이 경우에는 경고를 표시하고 싶지 않습니다.

나는 처음부터 틀린가요?

+0

시나리오 C의 경우 'didReceiveLocalNotification'이 호출되지 않고'didFinishLaunchingWithOptions' 만 호출됩니다. 이들은 애플리케이션 위임 메소드이므로 언제든지 이벤트를 수신 할 수 있으며 원하는 곳에서 이벤트를 수행 할 수 있습니다. 한 번에 하나씩 더 구체적인 질문을 할 수 있습니다. –

+0

@MarcusAdams, thx. 나는 실제로 매우 구체적인 질문을했고, 그것을 따라 가면서 나는 내 가정을 잘못 시작했다. didReceiveLocalNotification 메서드가 시나리오 C에서 호출되지 않는다고 말한 것처럼 모든 것을 단순화했습니다. 가서 답장으로 귀하의 의견을 변환하고 그것을 받아 들일 것입니다. –

답변

0

시나리오 C의 경우 didReceiveLocalNotification이 호출되지 않고 didFinishLaunchingWithOptions 만 호출됩니다.

이들은 응용 프로그램 대리자 메서드이므로 언제든지 (어떤보기 컨트롤러가 활성 상태인지에 관계없이) 이벤트를받을 수 있으며 원하는 모든 작업을 수행 할 수 있습니다.

예를 들어, 당신이 보여줄 수있는 UIAlertView 바로 didFinishLaunchingWithOptions에서 (기본 return YES; 전에) 당신이 경고의 해고를 처리 할 수 ​​있도록 UIAlertView의 대리인으로 응용 프로그램 대리자를 설정합니다.

또한 로컬 알림을 수신 할 때 앱이 포 그라운드 상태 인 경우 알림을받지 못한다는 점에 유의하십시오. 필요한 경우 사용자에게 경고하는 것은 사용자에게 달려 있습니다.

관련 문제