2

내 앱에서 로컬 알림을 사용하고 있습니다. 관심있는 유일한 알림은 사용자가 클릭 한 정확한 알림입니다.사용자가 클릭 한 로컬 알림을 처리하는 방법

통지를 수신하지만 난 사용자가 그래서 이것은 나에게 쓸모가 그것을 클릭 통지를 처리해야하는 경우

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

가 트리거 방법. 응용 프로그램은 내가

내가 인터넷을 검색하지만, 응용 프로그램이 활성 또는 실행 중이 아닌 경우에만 핸들을 찾을 필요가없는 것 또한 실행되지 않았을 때
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

에만 트리거. 앱이 백그라운드에있을 때 어떻게 처리 할 수 ​​있습니까? 내가 즉 필요한

는 사용자가 UILocalNotification을 만들 때 앱이 배경

답변

5

에서 실행되었을 때 클릭 정확한 알림을 인식하는 것입니다, 당신은 어떤 관련 데이터/고유 식별자를 설정합니다 userInfo을 설정할 수 있습니다 .

Ex.

UILocalNotification *someNotification = [[UILocalNotification alloc] init]; 
[someNotification setUserInfo:@{ kSomeUniqueIdentifierKey : @"identifier" }]; 

다음 앱이 실행되는 동안 또는 사용자가 앱이 백그라운드에있는 동안 해고 통지를 도청 할 때 알림을 수신 할 때

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    if ([notification.userInfo[kSomeUniqueIdentifierKey] isEqualToString:@"identifier"]) { 
     // We know what notification was responded to based on userInfo 
    } 
} 

위의 방법 화재 중 즉시.

응용 프로그램이 실행되는 동안 이러한 알림을 무시하려는 경우 응용 프로그램의 상태를 확인하여 실행 중 또는 백그라운드에서 알림에 응답하는지 확인할 수 있습니다.

+0

이 함수는 알림이 처음 전송 될 때만 시작됩니다. – Dima

+0

iOS 10에서 사용되지 않음 –

-1

저는 iOS 9를 사용하고 있으며 해결책은 AppDelegate didFinishLaunchingWithOptions 내의 launchOptions를 확인하는 것입니다. 다음과 같이 :

// Were we launched from a local notification? 
    if let lo = launchOptions 
    { 
     if let ln = lo[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification 
     { 
      // Do our thing... 
     } 
    } 
+0

나는 거의 3 년 전에 요청했습니다! 당신의 대답은 중요하지 않습니다. – Dima

관련 문제