Ios 处理UILocalNotification火灾事件

Ios 处理UILocalNotification火灾事件,ios,uilocalnotification,Ios,Uilocalnotification,因此,我正在使用UILocalNotification,我已经非常熟悉如何使用它 使用选项完成启动 及 DiReceiveLocalNotification 用于在通知发出时处理通知。我可以用做很多事情的代码来填充这两个函数 我似乎不知道如何让这些功能与我的应用程序的其余部分“交互”。让我解释一下我的意思 我最初认为可以在主视图控制器中创建一个委托协议,而不是在这两个函数中执行大部分逻辑。然后AppDelegate将注册为一个委托,然后我可以在我的视图控制器类中使用notification ev

因此,我正在使用UILocalNotification,我已经非常熟悉如何使用它

使用选项完成启动

DiReceiveLocalNotification

用于在通知发出时处理通知。我可以用做很多事情的代码来填充这两个函数

我似乎不知道如何让这些功能与我的应用程序的其余部分“交互”。让我解释一下我的意思

我最初认为可以在主视图控制器中创建一个委托协议,而不是在这两个函数中执行大部分逻辑。然后AppDelegate将注册为一个委托,然后我可以在我的视图控制器类中使用notification events调用方法,并在那里执行大部分逻辑。所有这些都像我所希望的那样有效——除了一个我没有预料到的情况

我已经弄明白为什么它不起作用了。我在MyViewController的viewDidLoad函数中分配代理:

- (void) viewDidLoad
{
    [super viewDidLoad];

    MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    appDelegate.delegate = self;
}
这样做的问题是,当应用程序冷启动时,会在MyViewController的viewDidLoad函数之前调用didfinishlaunchingwithoptions。所以它从来没有机会成为代表。我没有机会用我的委托协议方法处理在didfinishlaunchingwithoptions中获得的第一个UILocalNotification


所以我知道我的问题是什么,我想不出更好的方法来处理这些UILocalNotification事件。任何想法都值得赞赏。

我得到了一个解决方案,可能这不是一个好的解决方案

你可以信赖

使用选项实现您的
didfishlaunching:
如:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   //other code
   [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"notificationReceived"];
   return YES;
}
MyViewController

- (void)viewDidLoad
 {
   if([[NSUserDefaults standardUserDefaults] boolForKey:@"notificationReceived"])
   {
      //notification received do the stuff
      //reset the bool
      [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"notificationReceived"];
   }
 }

@谢谢你的评论。祝你一切顺利。