首页 文章

处理UILocalNotification火灾事件

提问于
浏览
0

所以我正在使用UILocalNotification,我已经非常熟悉了

didfinishlaunchingwithoptions

didReceiveLocalNotification

用于在发射时处理通知 . 我可以使用执行许多操作的代码来填充这些函数 .

我似乎无法弄清楚如何使这些功能与我的应用程序的其余部分“交互” . 让我解释一下我的意思 .

我最初认为可以在主视图控制器中创建委托协议,而不是在这两个函数中执行大部分逻辑 . 然后,AppDelegate将注册为委托,然后我可以在视图控制器类中使用通知事件调用方法,并在那里执行大多数逻辑 . 所有这一切都像希望的那样 - 除了一个我没想到的情况 .

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

- (void) viewDidLoad
{
    [super viewDidLoad];

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

    appDelegate.delegate = self;
}

这样做的问题是当App冷启动时,在FinViewController的viewDidLoad函数之前调用didfinishlaunchingwithoptions . 所以它永远不会有机会成为代表 . 没有机会处理我使用我的委托协议方法在didfinishlaunchingwithoptions中获得的第一个UILocalNotification .

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

1 回答

  • 1

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

    你可以依靠NSUserDefaults .

    实现你的 didFinishLaunchingWithOptions:

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

    viewDidLoadviewDidLoad

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

相关问题