我正在编写一个闹钟iOS应用。这是我第一次使用UILocalNotification。我正在从日期选择器获取日期。我已经格式化了日期,以检查我的函数是否通过了正确的日期。我检查了UILocalNotification的所有必需属性,并且全部拥有,并且通知仍然不会触发。有什么想法吗?谢谢您的帮助。
#import "BIDAlarmViewController.h"
@interface BIDAlarmViewController ()
@end
@implementation BIDAlarmViewController
@synthesize datePicker;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib
}
- (void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)setReminderUsingDateFromDatePicker: (id)sender{
[self scheduleNotificationForDate: datePicker.date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];
NSString *formattedDateString = [dateFormatter stringFromDate:datePicker.date];
NSLog(@"Button Pressed.. date: %@", formattedDateString);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alarm activated"
message:@"Alarm has been set"
delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
-(void) scheduleNotificationForDate: (NSDate*)date {
UILocalNotification *alarm = [[UILocalNotification alloc] init];
if (alarm) {
alarm.fireDate = date;
alarm.timeZone = [NSTimeZone defaultTimeZone];
alarm.repeatInterval = 0;
alarm.soundName = @"alarmsound.caf";
alarm.alertBody = @"Test message...";
[[UIApplication sharedApplication] scheduleLocalNotification:alarm];
}
}
@end
最佳答案
http://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveLocalNotification:
确保已在应用程序委托中实现了引用的方法,如下所示:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
NSLog(@"Notification fired"!);
}
Apple关于实现此方法的说明:
本地通知类似于远程推送通知,但是
它们的安排,显示和接收完全不同
同一台设备。应用程序可以创建和计划本地
通知,然后操作系统会在
安排日期和时间。如果在没有应用程序时提供它
在前台处于活动状态,它显示警报,对应用程序进行标记
图标,或播放声音-无论在
UILocalNotification对象。如果应用程序在
前台,没有警报,标志或声音;相反,
如果以下方法被调用,则application:didReceiveLocalNotification:方法被调用
委托实现它。
如果要通知委托,委托可以实现此方法。
发生本地通知。例如,如果应用程序是
日历应用程序,它可以枚举其日历事件列表以
确定哪些日期已经到期或即将到期
很快蒸蒸日上。它还可以重置应用程序图标徽章
数字,它可以访问本地通知中的任何自定义数据
对象的userInfo字典。
关于iphone - UILocalNotification将不会触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16951936/