接收到本地通知数据后如何创建使用目标 c 传递给主视图控制器?

Posted

技术标签:

【中文标题】接收到本地通知数据后如何创建使用目标 c 传递给主视图控制器?【英文标题】:how to create after receiving local notification data pass to Main view controller using objective c? 【发布时间】:2014-11-17 04:14:29 【问题描述】:

我已使用 Objective C for iPhone 应用程序创建本地通知流程。我想将didReceiveLocalNotification 之后的数据传递给主视图控制器。

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 


    if (app.applicationState == UIApplicationStateInactive ) 
        NSLog(@"app not running");

       // I need to pass the data to main view controller 


    else if(app.applicationState == UIApplicationStateActive )  
        NSLog(@"app running");


        // I need to pass the data to main view controller

    

    NSLog(@"Recieved Notification %@",notif);  // Handle the notificaton when the app is running 


【问题讨论】:

请像创建流程一样展示您的导航堆栈。 我已经创建了客户导航流程... 【参考方案1】:

你可以使用 NSNotificationCenter 来传递数据。

MainViewController.m

viewDidLoad

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

-(void)notifMainController:(NSNotification *)notif

    NSLog(@"%@",notif.object);

在 AppDelegate 中

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 


 NSLog(@"Recieved Notification %@",notif);  // Handle the notificaton when the app is running 

if (app.applicationState == UIApplicationStateInactive ) 

    NSLog(@"app not running");
   // I need to pass the data to main view controller 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
            MainViewController *obj = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
            [self.navC pushViewController:obj animated:NO];
            [[NSNotificationCenter defaultCenter] postNotificationName:@"notifMainController" object:@"your string"];
        );


else if(app.applicationState == UIApplicationStateActive )  

    NSLog(@"app running");
    // I need to pass the data to main view controller
    [[NSNotificationCenter defaultCenter] postNotificationName:@"notifMainController" object:@"your string"];



您可以像这样在对象中传递[[NSNotificationCenter defaultCenter] postNotificationName:@"notifMainController" object:@"your string"]; 中的字符串。 也许这会对你有所帮助。

【讨论】:

如何将数据从 Appdelegate 发送到第三个视图控制器。我以编程方式在我的应用代码中创建了所有内容。 @Mano 我写了所有代码。我添加了 nsnotificationcenter 并使用 NSNotitification 您可以发送数据。请阅读完整的答案。 好的...非常感谢@Chinttu @Mano 如果答案有帮助,则支持或接受即为答案。 另外:这是一篇很棒的文章:nshipster.com/nsnotification-and-nsnotificationcenter

以上是关于接收到本地通知数据后如何创建使用目标 c 传递给主视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ManagedObjectID 传递给主线程

反应本机ios目标c,无法在前台接收推送通知

无法接收 FCM 推送通知 IOS - 目标 C

如何创建本地通知?

创建后如何将通知场景添加到 WatchKit 目标?

从 swift 文件发送通知并在 ios 的目标 c 文件中接收