我现在已经在两个不同的应用程序中实现了UILocalNotifications
。一个使用位置服务,这意味着如果它被杀死,它(通常)会重新启动(所以它不是一个大问题)。但是,在另一个应用中,我会根据时间安排UILocalNotification
。在这种情况下,我遇到了一个重大问题。
如果我安排通知,那么应用程序会被杀死,推出内存不足,手机会关闭然后再打开,我无法在打开应用时“自动”查看旧通知。
以下是适用的工作流程(app在后台运行):
以下是不工作的工作流程(app不再在后台运行):
didReceiveLocalNotification
方法。用户认为该应用程序不起作用
注意:我甚至无法手动强制显示信息,因为如果他们收到了多个通知,我无法分辨他们触摸的是哪一个,以便知道要显示哪一个。当应用不在后台运行时,有没有办法知道他们触及了哪个通知(因此没有运行didReceiveLocalNotification method
)?
答案 0 :(得分:16)
在第二种情况下,用户已退出(或杀死)该应用,因此当用户触摸该通知时,您的应用就会启动。
这可以在下面提到的appDelegate的方法
中处理 启动应用程序时会调用 didFinishLaunchingWithOptions
,因此只需检查应用是否实际启动,因为用户触摸了通知(代码如下):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (notification)
{
NSLog(@"notification caused app to launch, alert body = %@", notification.alertBody);
// do what ever action you want to do
// you could just copy the code from "didReceiveLocalNotification" and paste it here
}
return YES;
}
答案 1 :(得分:2)
@Ranjit,这将在用户点击应用图标时起作用,因为它是一个应用委托方法。每次应用程序完成启动时都会调用。 (不能评论,因为我缺乏声誉......;))