2017-09-13 2 views
1

종료 된 앱에 푸시 알림을 보내고 있으며이 메소드 만 트리거 된 것 같습니다. 푸시 알림으로 앱을 시작할 때 ViewController를 열려고하지만 앱을 여는 데 아무런 역할을하지 않습니다. 응용 프로그램은 푸시 알림으로 종료 될 때didFinishLaunchingWithOptions의 ViewController를 엽니 다.

if (launchOptions != nil) { 

      NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
      if (userInfo != nil) 
      { 
       [[NSNotificationCenter defaultCenter] postNotificationName:@"openNews" object:nil userInfo:userInfo]; 
      } 
} 

모든 아이디어를 어떻게가의 ViewController를 시작합니다 ..

if (launchOptions != nil) { 

      NSDictionary* userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]; 
      NSDictionary *apsInfo = [userInfo objectForKey:@"aps"]; 
      if (apsInfo) 
      { 
       [[NSNotificationCenter defaultCenter] postNotificationName:@"openNews" object:nil userInfo:userInfo]; 
      } 


} 

이뿐만 아니라 시도 :

는이 코드와 그것을 달성하기 위해 노력했다? !

그래서 나는 launchOptions = 전무 단지 임 트리거 알림 정보와 코드의 일부를 받고 있는지 확인하는 경우 NSUserDefaults에 알림 정보를 저장하려고하고 그것을하지만 어떤 이유로이 부분은 작동하지 않습니다 :

[[NSNotificationCenter defaultCenter] postNotificationName:@"openNews" object:nil userInfo:userInfo]; 

하지만 임 동일한 방법을 사용하여 사방 그것을 당신이 아직 그것을 잡으려고 아무도으로 통지를 게시하고 있기 때문에 작동하지 않습니다 미세

답변

3

작동합니다.

흠, 여기에서 할 수있는 것은 지정한 launchOptions를받을 때 응용 프로그램의 초기 ViewController를 설정하는 것입니다.

이를 사용하여 설정할 수 있습니다

self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; 

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil]; 
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"YourStoryboardId"]; 

self.window.rootViewController = viewController; 
[self.window makeKeyAndVisible]; 

조심하지만 당신의 네비게이션을 설계. 특히 초기 ViewController가 탐색 스택에 액세스하는 뒤로 버튼이있는 페이지가되도록하려는 경우 특히 그렇습니다.

초기보기 컨트롤러가되므로 popViewController를 시도하면 에 아무 것도 표시되지 않습니다.

편집 : 방법 :

는 당신이, 당신은 openAnotherVC에서 원하는 VC로 이동

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(openAnotherVC:) 
name:@"YourPostNotificationName" object:nil]; 

그런 다음 MainVC에 tnis을 넣을 수 있습니다 지연으로 MainVC에서 열 수하려면

+0

내가 방금 ViewController를 열어 알림을 게시 할 수 있습니까? 예를 들어 1 초 지연? – kosas

+0

흠, 예, 당신은 MainViewController에 postNotification의 핸들러를 넣고 거기에서 VC를 열 수 있습니다. –

+0

내 대답을 편집했습니다. 그래도 작동하지 않으면 알려주세요. –