UILocalNotification с различными органами оповещения
Как я могу повторить UILocalNotification с различными органами оповещения?
Например:
UILocalNotification *notif = [[UILocalNotification alloc] init];
notif.alertBody = @"Hello";
notif.repeatInterval = NSDayCalendarUnit;
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
С помощью этого кода уведомление будет повторяться ежедневно, как я могу ежедневно повторять уведомление с другим телом предупреждения?
Благодарю.
2 ответа
Вы могли бы реализовать application:didReceiveLocalNotification
метод в AppDelegate и увеличьте переменную "дневной счетчик". Затем запланируйте новый UILocalNotification
с массивом строк для тела оповещения вашего уведомления. Используйте счетчик дней, чтобы получить обновленную строку. Вот пример кода:
В вашем AppDelegate.h:
@property (assign, nonatomic) int dayCount;
В вашем AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[self scheduleLocalNotification];
return YES;
}
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
self.dayCount++;
[self scheduleLocalNotification];
}
-(void)scheduleLocalNotification{
NSArray *notifTextArray = [NSArray arrayWithObjects:@"Hello", @"Welcome", @"Hi there", nil];
UILocalNotification *notif = [[UILocalNotification alloc] init];
if(self.dayCount < notifTextArray.count){
notif.alertBody = [notifTextArray objectAtIndex:self.dayCount];
}
else{
self.dayCount = 0;
notif.alertBody = [notifTextArray objectAtIndex:self.dayCount];
}
notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:86400]; //86400 seconds in a day
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
}
Просто вариант, но надеюсь, что это поможет.
После того, как вы запланировали локальное уведомление, вы не можете изменять какие-либо свойства уведомления, а также тела предупреждения.
Возможно, вам придется отменить старое уведомление и перенести новое уведомление для достижения этой цели.