所以我正在使用UILocalNotification,我已经非常熟悉
didfinishlaunchingwithoptions
和
didReceiveLocalNotification
用于在触发时处理通知。我可以使用代码来填充这些函数。
我似乎无法弄清楚如何让这些功能与我的应用程序的其余部分“交互”。让我解释一下我的意思。
我最初认为可以在主视图控制器中创建委托协议,而不是在这两个函数中执行大部分逻辑。然后,AppDelegate将注册为委托,然后我可以在视图控制器类中使用通知事件调用方法,并在那里执行大多数逻辑。所有这一切都像希望的那样 - 除了一个我没想到的情况。
我已经弄明白为什么它不起作用了。我在myViewController的viewDidLoad函数中分配了委托:
- (void) viewDidLoad
{
[super viewDidLoad];
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.delegate = self;
}
这样做的问题是,当App冷启动时,在FinViewController的viewDidLoad函数之前调用didfinishlaunchingwithoptions。所以它永远不会有机会成为代表。没有机会处理我在使用我的委托协议方法完成配置中的第一次UILocalNotification。
所以我知道我的问题是什么,我想不出更好的方法来处理这些UILocalNotification事件。任何想法都赞赏。
答案 0 :(得分:1)
我得到了一个解决方案,可能这不是一个好的解决方案。
您可以依靠NSUserDefaults。
实施didFinishLaunchingWithOptions:
之类的:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//other code
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"notificationReceived"];
return YES;
}
在viewDidLoad
的{{1}}
MyViewController