presentLocalNotificationNow
和scheduleLocalNotification
之间有什么区别。
以下两项功能均在1秒后显示通知
-(void)showLocalNotification:(NSNotification *)notification {
NSString *msg = @"test message";
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *_localNotification = [[UILocalNotification alloc]init];
_localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
_localNotification.timeZone = [NSTimeZone defaultTimeZone];
_localNotification.alertBody = msg;
_localNotification.soundName = UILocalNotificationDefaultSoundName;
_localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber]+1;
[[UIApplication sharedApplication] scheduleLocalNotification:_localNotification];
// or
//[[UIApplication sharedApplication] presentLocalNotificationNow:_localNotification];
}
答案 0 :(得分:2)
如果应用程序在后台运行,则本地通知将不会收到警报或声音,因为它直接由应用程序接收。在这种情况下,您需要使用presentLocalNotificationNow来显示通知。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIApplicationState applicationState = application.applicationState;
if (applicationState == UIApplicationStateBackground) {
[application presentLocalNotificationNow:notification];
}
}
来自Apple文档:
创建UILocalNotification实例后,即可安排 它使用UIApplication类的两种方法之一: scheduleLocalNotification:或presentLocalNotificationNow:。前者 方法使用开火日期来安排交货;后一种方法 无论价值如何,都会立即显示通知 fireDate。您可以通过取消特定或所有本地通知 调用cancelLocalNotification:或cancelAllLocalNotifications, 分别
答案 1 :(得分:0)
这里没有区别,但是使用scheduleLocalNotification
你可以在任何你需要的时间安排它,而不仅仅是一秒钟。
而且,没有人承诺,presentLocalNotificationNow
将在一秒钟内显示一个,而不是在iOS 8中显示0.5或2.0。