gpt4 book ai didi

iphone - 应用关闭 7 天后安排本地通知

转载 作者:可可西里 更新时间:2023-11-01 05:13:48 25 4
gpt4 key购买 nike

为我的应用程序启用本地通知 相当困难。

是的,我用本地通知设置了我的项目,我想在应用程序关闭一周周后安排。例如,如果用户在星期六 8 日打开应用程序,则本地通知应出现在下一个星期六 15 日,但时间应该更改。例如,他/她在晚上 8 点关闭应用程序,我不想在下周晚上 8 点打扰他们,所以我想在下午 6 点或类似时间显示每个通知。

现在您知道我的问题了,这是我正在使用的代码:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[UIApplication sharedApplication] cancelAllLocalNotifications];

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar] ;
NSDateComponents *componentsForReferenceDate = [[NSDateComponents alloc] init];

//set day (saturday)

[componentsForReferenceDate setDay:26] ;
[componentsForReferenceDate setMonth:1] ;
[componentsForReferenceDate setYear:2013] ;

[componentsForReferenceDate setHour: 17] ;
[componentsForReferenceDate setMinute:30] ;
[componentsForReferenceDate setSecond:00] ;

NSDate *fireDateOfNotification = [calendar dateFromComponents: componentsForReferenceDate];

// Create the notification

UILocalNotification *notification = [[UILocalNotification alloc] init] ;


notification.fireDate = fireDateOfNotification ;
notification.timeZone = [NSTimeZone localTimeZone] ;
notification.alertBody = [NSString stringWithFormat: @"Du wirst vermisst! \nDeine App braucht dich, schreibe sie zu Ende!"] ;
notification.alertAction = @"Zurückkehren";
notification.userInfo= [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Some information"] forKey:@"information"];
notification.repeatInterval= NSWeekCalendarUnit ;
notification.soundName = @"Appnotifisound.wav";
notification.applicationIconBadgeNumber = 1;
[[UIApplication sharedApplication] scheduleLocalNotification:notification] ;

}

我知道必须有更多的方法来删除角标(Badge)和 didrecievenotification,但我把它们放出来了,因为有对此很重要。

使用此代码,我设法将通知安排在每个 星期六 5:30pm(德国)。但我只想安排一次,当应用程序关闭整整 一周 周时。这有可能吗?如果有人可以更正我的代码或为此提供解决方案,我会很高兴。

向您致以最诚挚的问候,感谢您阅读这篇长篇文章,

诺亚

最佳答案

您应该取消安排之前的通知。

for (UILocalNotification *lNotification in [[UIApplication sharedApplication] scheduledLocalNotifications]) 
{
if ([[lNotification.userInfo valueForKey:@"information"] isEqualToString:@"Some information"])
{
[[UIApplication sharedApplication]cancelLocalNotification:lNotification];
break;
}
}

通过以下方式设置开火日期:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *componentsForReferenceDate = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
fromDate:[NSDate date]];
[componentsForReferenceDate setHour: 17] ;
[componentsForReferenceDate setMinute:30] ;
[componentsForReferenceDate setSecond:00] ;

NSDate *tempDate = [calendar dateFromComponents: componentsForReferenceDate];
[componentsForReferenceDate release];

NSDateComponents *comps = [[NSDateComponents alloc]init];
[comps setDay:7];
NSDate *fireDateOfNotification = [calendar dateByAddingComponents:comps
toDate:tempDate options:0]
[comps release];

关于iphone - 应用关闭 7 天后安排本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com