簡體   English   中英

iOS在特定日期設置本地通知

[英]iOS set local notification on a specific day

我確信這個問題在某個地方是重復的,但我找不到解決辦法。 我正在創建一個應用程序,其中一個功能允許用戶選擇他們將收到本地通知的日期和時間。

他們可以選擇他們喜歡的一天中的任何時間,並可以切換一周中的不同日期(周一,周二,妻子等)。 通知將每周發送一次。 因此,我限制用戶只創建3個通知 - 如果選擇了所有7天,我會將repeatInterval設置為daily(一個通知)。 如果為每3個通知選擇了6天,那么我將需要每天的單獨通知(總共3x6 = 18個通知)。 很可能只會使用1個通知,所以這很好。

我知道如何在將來的某個時間設置通知,但如何在星期一下午6點設置通知?

下面是我用於測試的代碼。 它將來會設置4秒的警報(我從applicationDidEnterBackground調用它)。

    NSDateComponents *changeComponent = [[NSDateComponents alloc] init];
    changeComponent.second = 4;

    NSCalendar *theCalendar = [NSCalendar currentCalendar];
    NSDate *itemDate = [theCalendar dateByAddingComponents:changeComponent toDate:[NSDate date] options:0];

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    localNotif.fireDate = itemDate;
    localNotif.timeZone = [NSTimeZone defaultTimeZone];
    localNotif.repeatInterval = NSWeekdayCalendarUnit;

與您現在正在做的完全相同,但以不同方式創建日期:

NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease];
[comps setDay:1];
[comps setMonth:1];
[comps setYear:2013];
[comps setHour:10];
[comps setMinute:10];
[comps setSecond:10];
localNotif.fireDate = [[NSCalendar currentCalendar] dateFromComponents:comps];

我也搜索過它。 下面的代碼對我有用。 將星期日值1到7星期日到星期六和通知機構通過您要觸發的操作並指定您的日期然后通知將在特定日期到來。希望這對您有所幫助。

-(void) weekEndNotificationOnWeekday: (int)weekday :(UILocalNotification *)notification : (NSDate*) alramDate
{
    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *componentsForFireDate = [calendar components:(NSYearCalendarUnit | NSWeekCalendarUnit |  NSHourCalendarUnit | NSMinuteCalendarUnit| NSSecondCalendarUnit | NSWeekdayCalendarUnit) fromDate: alramDate];
    [componentsForFireDate setWeekday: weekday] ; //for fixing Sunday
  //   [componentsForFireDate setHour: 20] ; //for fixing 8PM hour
 //    [componentsForFireDate setMinute:0] ;
 //    [componentsForFireDate setSecond:0] ;
    notification.repeatInterval = NSWeekCalendarUnit;
    notification.fireDate=[calendar dateFromComponents:componentsForFireDate];
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];

}

我知道如何在將來的某個時間設置通知,但如何在星期一下午6點設置通知?

您可以在下周一創建一個表示下午6點的NSDate對象,其方法如何從現有NSDate獲取特定日期和時間的NSDate 然后,如果您希望它在每個星期一重復,您可以使用localNotification.repeatInterval = NSWeekCalendarUnit 但是我不確定它會在夏令時期間按預期工作。

我認為您不能安排具有這么大靈活性的通知。 只要在他們改變它的時候安排下一個,並且當它觸發計划時,下一個即將發生。 只有一個擔心取消和易於設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM