2017-09-13 68 views
1

我發送推送通知到終止的應用程序,似乎只有這種方法被觸發。我想在應用程序啓動時使用推送通知來打開ViewController,但它不會執行任何操作,只是打開應用程序。從didFinishLaunchingWithOptions打開ViewController

我試圖實現與驗證碼:

if (launchOptions != nil) { 

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


} 

,並試圖以此爲好..

if (launchOptions != nil) { 

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

任何想法如何,當應用程序被終止,推送通知,推出的ViewController?

所以我一直試圖挽救通知信息,以NSUserDefaults的,如果launchOptions =零隻是爲了檢查,如果im接收通知信息和代碼的一部分被觸發,它是,但由於某種原因,這部分是不工作:

[[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,它會pop什麼都不做。

編輯:

如果你想讓它從MainVC打開了延遲,你可以把tnis在MainVC

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

然後導航至您想要的VC在openAnotherVC:方法

+0

我可以只發布通知以便延遲打開ViewController嗎?例如1秒延遲? – kosas

+0

嗯,是的,你可以把你的postNotification處理程序放在你的MainViewController上並從那裏打開VC。 –

+0

我編輯了我的答案。讓我知道它是否仍然無效 –

相關問題