UILocalNotification 可以用来唤醒后台的任务吗
Posted
技术标签:
【中文标题】UILocalNotification 可以用来唤醒后台的任务吗【英文标题】:Can UILocalNotification be used to wake up a task that is in the background 【发布时间】:2012-11-09 03:41:38 【问题描述】:我想知道,是否有可能以某种方式“唤醒”后台任务,以快速检查网络上的某些内容。我认为这可以通过 UILocalNotification 来完成,但无论如何我试过了,当应用程序在后台时,我无法让 didReceiveLocalNotification 做任何事情。启动后,我立即按下主页按钮关闭应用程序(本地通知有 10 秒延迟触发)。当应用程序处于前台时,此代码可以完美运行,并且只是坐在那里......
在应用委托头文件中:
UILocalNotification *localNotif;
为了测试,我设置了本地通知以在 appDelegate 启动时快速触发。
localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; // the date you want the notification to fire.
localNotif.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
NSLog(@"setup the timer for 10 seconds");
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
UIApplicationState state = [application applicationState];
NSLog(@"getting kicked");
if (state == UIApplicationStateInactive)
// Application was in the background when notification was delivered.
NSLog(@"INACTIVE..");
else
NSLog(@"ACTIVE..");
【问题讨论】:
【参考方案1】:用户有几个选择:#1) 他们是否希望看到您的应用的通知。 #2) 如果您的应用启用了通知,他们是否希望点击您的通知来启动您的应用。如果他们确实接受通知并在您的应用程序处于后台时打开您的通知,则会调用 application:didReceiveLocalNotification
。需要明确的是,用户必须接受通知(例如在通知下方滑动滑块)...否则会调用 NOTHING。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
NSLog(@"%@", notification);
如果您的应用程序已被终止 application:didFinishLaunchingWithOptions:
被调用 -
- (BOOL)application:(UIApplication *)
application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
UILocalNotification *theNotification =
[launchOptions
objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
NSLog(@"%@", theNotification);
return YES;
【讨论】:
据我所知,didReceiveLocalNotification 仅在有人在本地通知后滑动之后执行,而不是之前,如果应用程序在后台(为应用程序打开了通知).. 没错...这就是通知的局限性...它需要真正的用户与之交互。以上是关于UILocalNotification 可以用来唤醒后台的任务吗的主要内容,如果未能解决你的问题,请参考以下文章
Ios开发中UILocalNotification实现本地通知实现提醒功能
iOS开发中UILocalNotification实现本地通知实现提醒功能