iOS 通过本地通知显示特定的视图控制器

Posted

技术标签:

【中文标题】iOS 通过本地通知显示特定的视图控制器【英文标题】:iOS Show specific viewcontroller via local notification 【发布时间】:2013-12-03 16:36:06 【问题描述】:

我已经在我的应用中实现了本地通知,但我想选择在用户“滑动”通知时显示哪个视图控制器。我的应用是几个视图控制器,它们之间有基本的 segue 导航。

如何选择查看哪个视图控制器?

【问题讨论】:

【参考方案1】:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

    [[UIApplication sharedApplication] cancelLocalNotification:notification];


    //My_specificViewController
    RingingViewController *ringingVC = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"RingingViewController"];
    [self.window setRootViewController:ringingVC];

【讨论】:

【参考方案2】:

您可以在 application:didFinishLaunchingWithOptions 方法中处理本地通知,然后您可以选择正确的视图控制器:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    // Handle notification
    UILocalNotification *localNotif =
    [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    UIViewController *vc = nil
    if (localNotif) 
        //base on notification create right view controller
        vc = [[VC alloc] init];
        NSLog(@"Recieved Notification %@",localNotif);
    
    else
    
       //create default view controller
        vc = [[VC alloc] init];
    

    // Add the view controller's view to the window and display.
    _window.rootViewController = vc;
    [_window makeKeyAndVisible];

    return YES;

【讨论】:

【参考方案3】:

Greg 给了你大部分答案,但请注意,除了 didFinishLaunchingWithOptions 之外,你还需要添加一个 application:didReceiveLocalNotification: 方法。一旦您的应用程序运行,该方法就会被调用。我建议将处理本地通知的代码提取到一个方法中并从两个地方调用它。

【讨论】:

以上是关于iOS 通过本地通知显示特定的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

本地通知后 Xcode 显示特定视图

如果应用程序在前台,单击本地通知打开特定的视图控制器?

iOS 13 中的本地通知 didReceive

如何在单击本地通知时获取特定的视图控制器?..我尝试了所有可能的方法来实现但不能

如何在 ios 10 中为不同的本地通知启动不同的视图控制器

iOS本地通知打开特定选项卡?