如何在 iOS 中设置闹钟?

Posted

技术标签:

【中文标题】如何在 iOS 中设置闹钟?【英文标题】:How to set an Alarm in iOS? 【发布时间】:2012-08-07 16:00:44 【问题描述】:

我知道这个问题在 *** 上已经问过很多次了,但我无法在我的应用程序中设置警报,因为我对 ios 很陌生?我正在按照本教程设置警报:

Setting a reminder using UILocalNotification in iOS.

但是,它似乎对我不起作用。

我需要每天设置闹钟,比如说5.00 PM 每天。我不能使用日期选择器来选择时间。

【问题讨论】:

【参考方案1】:

    首先在您的xib(或代码)上设置日期选择器模式:时间(默认为日期和时间)

    系统假定触发日期是当前日期,时间是用户选择的时间。这不是问题,因为您设置了重复间隔,所以它会起作用。我已经测试过了。

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    [localNotif setFireDate:datePicker.date];
    [localNotif setRepeatInterval:NSDayCalendarUnit];
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
    

PS:最好使用NSDateComponents 类将秒数设置为0,以便将闹钟设置为在您想要的一分钟的第一秒响起。您可以检查:

Local notifications in iOS.

您发布的有关如何执行此操作的教程。

【讨论】:

感谢您的回答,但我设法做到了不同的方法.. 它的工作原理。一个问题.. 是否可以弹出自定义通知视图而不是默认视图,并且还想添加在我的项目中添加的自定义声音是可能的.. +1 支持 您无法显示自定义通知弹出窗口。您可以添加自定义声音,但它应该在应用程序包中。因此,无法播放该应用程序从互联网下载的声音。您只能播放系统声音,或在编译之前已导入应用程序的声音。别客气。如果您认为正确,请采纳答案,以帮助以后的用户找到解决此问题的方法。 是的。这就是我要找的东西,您能否发布一些代码以在编译前导入的应用程序包中播放声音 [localNotif setSoundName:@"mymusic.m4a"];您应该将文件 mymusic.m4a 拖放到您的应用程序文件夹中。如果您想在应用打开时播放声音,请尝试使用 AVAudioPlayer NSURL *file = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"morning_alarm" ofType:@"mp3"]]; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:nil]; audioPlayer.numberOfLoops = -1; [音频播放器设置音量:1.0]; [audioPlayer prepareToPlay];【参考方案2】:
+ (void)addLocalNotification:(int)year:(int)month:(int)day:(int)hours:(int)minutes:(int)seconds:(NSString*)alertSoundName:(NSString*)alertBody:(NSString*)actionButtonTitle:(NSString*)notificationID

带参数调用这个方法并使用这个

 + (void)addLocalNotification:(int)year:(int)month:(int)day:(int)hours:(int)minutes:(int)seconds:(NSString*)alertSoundName:(NSString*)alertBody:(NSString*)actionButtonTitle:(NSString*)notificationID 
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];

//set the notification date/time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:day];

[dateComps setMonth:month];

[dateComps setYear:year];
[dateComps setHour:hours];

[dateComps setMinute:minutes];
[dateComps setSecond:seconds];

NSDate *notificationDate = [calendar dateFromComponents:dateComps];
[dateComps release];

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
    return;
localNotif.fireDate = notificationDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];

// Set notification message
localNotif.alertBody = alertBody;
// Title for the action button
localNotif.alertAction = actionButtonTitle;

localNotif.soundName = (alertSoundName == nil) ? UILocalNotificationDefaultSoundName : alertSoundName;

//use custom sound name or default one - look here to find out more: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html%23//apple_ref/doc/uid/TP40008194-CH103-SW13

localNotif.applicationIconBadgeNumber += 1; //increases the icon badge number

// Custom data - we're using them to identify the notification. comes in handy, in case we want to delete a specific one later
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:notificationID forKey:notificationID];
localNotif.userInfo = infoDict;

// Schedule the notification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];

【讨论】:

【参考方案3】:

您可能需要更改日期选择器的样式,以允许在更改日期之外更改时间。

【讨论】:

感谢您的回答..是否可以发布任何设置闹钟的教程 原始教程希望您已经在此环境中拥有一些经验,并且有充分的理由:在任何该级别或更高级的教程中,您可能会遇到许多基本的事情。我建议您复习基础知识并逐步完成这些类型的任务,否则您将无法完成任何事情,根据自己的喜好更改或在出现故障时修复它。 感谢您的评论..实际上警报得到通知但我无法得到弹出窗口..会是什么问题 你能解释清楚你的问题到底是什么吗?我想我可以帮助你 @GeorgeSachin 我需要每天根据用户时间设置闹钟,就像在没有日期的闹钟应用程序中一样。谢谢【参考方案4】:

你可以试试这个

UILocalNotification *todolistLocalNotification=[[UILocalNotification alloc]init];
[todolistLocalNotification setFireDate:[lodatepicker date]];
[todolistLocalNotification setAlertAction:@"Note list"];
[todolistLocalNotification setTimeZone:[NSTimeZone defaultTimeZone]];
[todolistLocalNotification setAlertBody:text_todolist];
[todolistLocalNotification setHasAction:YES];

【讨论】:

以上是关于如何在 iOS 中设置闹钟?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中设置一次闹钟

如何在iphone中设置选定日期的闹钟?

如何使用 AlarmClock 在 android 中设置闹钟的日期

如何检测何时在 Android 中设置了新警报

如何以编程方式在所有应用程序中设置上部文本?

如何在 Linux 中设置不到一秒钟的警报?