如何将本地通知重复间隔设置为自定义时间间隔?

时间:2022-07-15 02:56:17

I am making an iPhone app, which has a requirement of Local Notifications.

我正在制作一个iPhone应用程序,它需要本地通知。

In local notifications there is repeatInterval property where we can put the unit repeat intervals for mintute, hour, day,week,year, etc.

在本地通知中有repeatInterval属性,我们可以将单位重复间隔设置为分钟,小时,日,周,年等。

I want that repeat interval should be 4 hours.

我希望重复间隔应该是4个小时。

So every 4 hours the local notification comes.

因此每4个小时就会收到本地通知。

I dont want the user to set seperate notifications for each.

我不希望用户为每个设置单独的通知。

I want the user to be able to set repeatInterval as 4 hours.

我希望用户能够将repeatInterval设置为4小时。

How do I do that?

我怎么做?

7 个解决方案

#1


42  

Got the answer

得到了答案

It is as straight as it gets.

它就像它一样直。

You cannot create custom repeat intervals.

您无法创建自定义重复间隔。

You have to use on NSCalendarUnit's in-built Unit Time Intervals.

您必须在NSCalendarUnit的内置单位时间间隔上使用。

I tried all the above solutions and even tried other stuffs, but neither of them worked.

我尝试了所有上述解决方案,甚至尝试了其他的东西,但他们都没有工作。

I have invested ample time in finding out that there is no way we can get it to work for custom time intervals.

我已经投入了大量时间来发现我们无法让它按照自定义的时间间隔工作。

Hope this helps all who are looking out for the solution.

希望这有助于所有寻求解决方案的人。

Thanks to all the guys who tried to answer my question. Thanks Guys!!

感谢所有试图回答我问题的人。多谢你们!!

#2


17  

The repeat interval is just an enum that has a bit-map constant, so there is no way to have custom repeatIntervals, just every minute, every second, every week, etc.

重复间隔只是一个具有位图常量的枚举,因此无法使用自定义repeatIntervals,只需每分钟,每秒,每周等。

That being said, there is no reason your user should have to set each one. If you let them set two values in your user interface, something like "Frequency unit: Yearly/Monthly/Weekly/Hourly" and "Every ____ years/months/weeks/hours" then you can automatically generate the appropriate notifications by setting the appropriate fire date without a repeat.

话虽这么说,你的用户没有理由设置每一个。如果您让他们在您的用户界面设置两个值,例如“频率单位:每年/每月/每周/每小时”和“每____年/月/周/小时”,那么您可以通过设置适当的自动生成相应的通知火灾日期没有重复。

UILocalNotification *locNot = [[UILocalNotification alloc] init];
NSDate *now = [NSDate date];
NSInterval interval;
switch( freqFlag ) {     // Where freqFlag is NSHourCalendarUnit for example
    case NSHourCalendarUnit:
        interval = 60 * 60;  // One hour in seconds
        break;
    case NSDayCalendarUnit:
        interval = 24 * 60 * 60; // One day in seconds
        break;
}
if( every == 1 ) {
    locNot.fireDate = [NSDate dateWithTimeInterval: interval fromDate: now];
    locNot.repeatInterval = freqFlag;
    [[UIApplication sharedApplication] scheduleLocalNotification: locNot];
} else {
    for( int i = 1; i <= repeatCountDesired; ++i ) {
        locNot.fireDate = [NSDate dateWithTimeInterval: interval*i fromDate: now];
        [[UIApplication sharedApplication] scheduleLocalNotification: locNot];
    }
}
[locNot release];

#3


6  

I have one idea how to do this, i've implemented this in my project

我有一个想法如何做到这一点,我已经在我的项目中实现了这一点

First, create local notification with fire date (for example, every minute). Next step - fill user info with unique id for this notification (if you want to remove it in future) and your custom period like this:

首先,使用开火日期(例如,每分钟)创建本地通知。下一步 - 使用此通知的唯一ID填写用户信息(如果您希望将来删除它)以及您的自定义期间,如下所示:

-(void) createLocalRepeatedNotificationWithId: (NSString*) Id
{

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    NSTimeInterval your_custom_fire_interval = 60; // interval in seconds
    NSDate *remindDate = [[NSDate date] dateByAddingTimeInterval:your_custom_fire_interval];
    localNotification.fireDate = remindDate;
    localNotification.userInfo = @{@"uid":Id, @"period": [NSNumber numberWithInteger:your_custom_fire_interval]};
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

After that, implement -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification in your AppDelegate:

之后,在AppDelegate中实现 - (void)应用程序:(UIApplication *)应用程序didReceiveLocalNotification:(UILocalNotification *)通知:

  1. Fetch your custom period from user info.
  2. 从用户信息中获取自定义期间。
  3. Change fire date for next period
  4. 更改下一期间的开火日期
  5. Just add it into the sheluded notificatiots again!

    只需将它添加到隐藏的通知中即可!

    NSInteger period = [[notification.userInfo objectForKey:@"period"] integerValue]; //1
    NSTimeInterval t= 10 * period;
    notification.fireDate =[[NSDate date] dateByAddingTimeInterval:t]; //2 
     [[UIApplication sharedApplication] scheduleLocalNotification:notification]; //3
    

if you want to remove this notification, do

如果要删除此通知,请执行

UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
    NSDictionary *userInfoCurrent = oneEvent.userInfo;
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"id"]];
    if ([uid isEqualToString:notification_id_to_remove])
    {
        //Cancelling local notification
        [app cancelLocalNotification:oneEvent];
        break;
    }
}

Very important!

很重要!

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification do not called, when you at background. So, you must setup long-running background task, where you will create notification again.

- (void)应用程序:(UIApplication *)应用程序didReceiveLocalNotification :( UILocalNotification *)通知在您处于后台时不会调用。因此,您必须设置长时间运行的后台任务,您将在其中再次创建通知。

#4


5  

i have used this code and it is working fine for repeat LocalNotification i have used LavaSlider Code for this code implemetation

我已经使用了这段代码,它可以正常重复LocalNotification我使用LavaSlider代码进行此代码实现

     UILocalNotification *    localNotifEndCycle = [[UILocalNotification alloc] init];
      localNotifEndCycle.alertBody = @"Your Expected Date ";
      NSDate *now = [NSDate date];

      for( int i = 1; i <= 10;i++) 
     {
        localNotifEndCycle.alertBody = @"Your Expected Date ";
        localNotifEndCycle.soundName=@"best_guitar_tone.mp3";
        localNotifEndCycle.fireDate = [NSDate dateWithTimeInterval:180*i sinceDate:now];
        [[UIApplication sharedApplication] scheduleLocalNotification: localNotifEndCycle];
     }
     }

#5


1  

-(void)schedulenotificationfortimeinterval:(NSString *)id1
{
    NSLog(@"selected value %d",selectedvalue);

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"MMM dd,yyyy hh:mm a"];

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


   // localNotification2. fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:0];

    if(selectedvalue==0)
    {
        NSLog(@"dk 0000");

        localNotification2.fireDate = [formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] ;//now

        localNotification2.applicationIconBadgeNumber = 1;

        localNotification2.repeatInterval=NSDayCalendarUnit;

    }
    if(selectedvalue==1)
    {
        NSLog(@"dk 1111");

        for( int u = 0; u <= 2 ;u++)
        {
        localNotification2.fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:43200.0*u] ;// 12 hr 
            localNotification2.repeatInterval=NSDayCalendarUnit;

            localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

            localNotification2.alertAction = @"Notification";
            localNotification2.soundName=UILocalNotificationDefaultSoundName;
            localNotification2.applicationIconBadgeNumber = 2;


            [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

            NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

        }

     //  localNotification2.repeatInterval=NSDayCalendarUnit;

     }

    if(selectedvalue==2)
    {
        NSLog(@"dk 22222");
        for( int u = 0; u <= 3 ;u++)
        {
            localNotification2.fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:28800.0*u] ;//8 hr 
            localNotification2.repeatInterval=NSDayCalendarUnit;

            localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

            localNotification2.alertAction = @"Notification";
            localNotification2.soundName=UILocalNotificationDefaultSoundName;
            localNotification2.applicationIconBadgeNumber = 3;


            [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

            NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

        }


      //  localNotification2.repeatInterval=NSDayCalendarUnit;
    }

    if(selectedvalue==3)
    {
       NSLog(@"dk 3333");
        for( int u = 0; u <= 4 ;u++)
        {
            localNotification2.fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:21600.0*u] ;//6 hr
            localNotification2.repeatInterval=NSDayCalendarUnit;

            localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

            localNotification2.alertAction = @"Notification";
            localNotification2.soundName=UILocalNotificationDefaultSoundName;
            localNotification2.applicationIconBadgeNumber = 4;


            [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

            NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

        }


      //  localNotification2.repeatInterval=NSDayCalendarUnit;
   }  
 //   localNotification2.repeatInterval=NSDayCalendarUnit;

    NSLog(@"date is %@ %@",[MedicationDict valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]);

    localNotification2.timeZone = [NSTimeZone localTimeZone];


     localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

    localNotification2.alertAction = @"Notification";
    localNotification2.soundName=UILocalNotificationDefaultSoundName;
    //localNotification2.applicationIconBadgeNumber = 1;

  //  infoDict = [NSDictionary dictionaryWithObject:id1 forKey:@"did"];

  //  localNotification2.userInfo = infoDict;

  //  [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

 //   NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

   // [[UIApplication sharedApplication] cancelAllLocalNotifications];//dk
 }

#6


0  

You can set any time interval you want, if you set up separate notifications for each time you want a notification to fire. You then have to manage them, and if you are not an app that is at present allowed to run in the background, you'll have to refresh them by having the user run your app to do so. Having accomplished this, I can tell you it is a major PITA.

如果您希望每次触发通知时都设置单独的通知,则可以设置所需的任何时间间隔。然后,您必须管理它们,如果您不是目前允许在后台运行的应用程序,则必须通过让用户运行您的应用程序来刷新它们。完成这项工作后,我可以告诉你它是一个主要的PITA。

#7


-6  

notif.repeatInterval = NSDayCalendarUnit;

notif.repeatInterval = NSDayCalendarUnit;

#1


42  

Got the answer

得到了答案

It is as straight as it gets.

它就像它一样直。

You cannot create custom repeat intervals.

您无法创建自定义重复间隔。

You have to use on NSCalendarUnit's in-built Unit Time Intervals.

您必须在NSCalendarUnit的内置单位时间间隔上使用。

I tried all the above solutions and even tried other stuffs, but neither of them worked.

我尝试了所有上述解决方案,甚至尝试了其他的东西,但他们都没有工作。

I have invested ample time in finding out that there is no way we can get it to work for custom time intervals.

我已经投入了大量时间来发现我们无法让它按照自定义的时间间隔工作。

Hope this helps all who are looking out for the solution.

希望这有助于所有寻求解决方案的人。

Thanks to all the guys who tried to answer my question. Thanks Guys!!

感谢所有试图回答我问题的人。多谢你们!!

#2


17  

The repeat interval is just an enum that has a bit-map constant, so there is no way to have custom repeatIntervals, just every minute, every second, every week, etc.

重复间隔只是一个具有位图常量的枚举,因此无法使用自定义repeatIntervals,只需每分钟,每秒,每周等。

That being said, there is no reason your user should have to set each one. If you let them set two values in your user interface, something like "Frequency unit: Yearly/Monthly/Weekly/Hourly" and "Every ____ years/months/weeks/hours" then you can automatically generate the appropriate notifications by setting the appropriate fire date without a repeat.

话虽这么说,你的用户没有理由设置每一个。如果您让他们在您的用户界面设置两个值,例如“频率单位:每年/每月/每周/每小时”和“每____年/月/周/小时”,那么您可以通过设置适当的自动生成相应的通知火灾日期没有重复。

UILocalNotification *locNot = [[UILocalNotification alloc] init];
NSDate *now = [NSDate date];
NSInterval interval;
switch( freqFlag ) {     // Where freqFlag is NSHourCalendarUnit for example
    case NSHourCalendarUnit:
        interval = 60 * 60;  // One hour in seconds
        break;
    case NSDayCalendarUnit:
        interval = 24 * 60 * 60; // One day in seconds
        break;
}
if( every == 1 ) {
    locNot.fireDate = [NSDate dateWithTimeInterval: interval fromDate: now];
    locNot.repeatInterval = freqFlag;
    [[UIApplication sharedApplication] scheduleLocalNotification: locNot];
} else {
    for( int i = 1; i <= repeatCountDesired; ++i ) {
        locNot.fireDate = [NSDate dateWithTimeInterval: interval*i fromDate: now];
        [[UIApplication sharedApplication] scheduleLocalNotification: locNot];
    }
}
[locNot release];

#3


6  

I have one idea how to do this, i've implemented this in my project

我有一个想法如何做到这一点,我已经在我的项目中实现了这一点

First, create local notification with fire date (for example, every minute). Next step - fill user info with unique id for this notification (if you want to remove it in future) and your custom period like this:

首先,使用开火日期(例如,每分钟)创建本地通知。下一步 - 使用此通知的唯一ID填写用户信息(如果您希望将来删除它)以及您的自定义期间,如下所示:

-(void) createLocalRepeatedNotificationWithId: (NSString*) Id
{

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    NSTimeInterval your_custom_fire_interval = 60; // interval in seconds
    NSDate *remindDate = [[NSDate date] dateByAddingTimeInterval:your_custom_fire_interval];
    localNotification.fireDate = remindDate;
    localNotification.userInfo = @{@"uid":Id, @"period": [NSNumber numberWithInteger:your_custom_fire_interval]};
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

After that, implement -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification in your AppDelegate:

之后,在AppDelegate中实现 - (void)应用程序:(UIApplication *)应用程序didReceiveLocalNotification:(UILocalNotification *)通知:

  1. Fetch your custom period from user info.
  2. 从用户信息中获取自定义期间。
  3. Change fire date for next period
  4. 更改下一期间的开火日期
  5. Just add it into the sheluded notificatiots again!

    只需将它添加到隐藏的通知中即可!

    NSInteger period = [[notification.userInfo objectForKey:@"period"] integerValue]; //1
    NSTimeInterval t= 10 * period;
    notification.fireDate =[[NSDate date] dateByAddingTimeInterval:t]; //2 
     [[UIApplication sharedApplication] scheduleLocalNotification:notification]; //3
    

if you want to remove this notification, do

如果要删除此通知,请执行

UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
    NSDictionary *userInfoCurrent = oneEvent.userInfo;
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"id"]];
    if ([uid isEqualToString:notification_id_to_remove])
    {
        //Cancelling local notification
        [app cancelLocalNotification:oneEvent];
        break;
    }
}

Very important!

很重要!

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification do not called, when you at background. So, you must setup long-running background task, where you will create notification again.

- (void)应用程序:(UIApplication *)应用程序didReceiveLocalNotification :( UILocalNotification *)通知在您处于后台时不会调用。因此,您必须设置长时间运行的后台任务,您将在其中再次创建通知。

#4


5  

i have used this code and it is working fine for repeat LocalNotification i have used LavaSlider Code for this code implemetation

我已经使用了这段代码,它可以正常重复LocalNotification我使用LavaSlider代码进行此代码实现

     UILocalNotification *    localNotifEndCycle = [[UILocalNotification alloc] init];
      localNotifEndCycle.alertBody = @"Your Expected Date ";
      NSDate *now = [NSDate date];

      for( int i = 1; i <= 10;i++) 
     {
        localNotifEndCycle.alertBody = @"Your Expected Date ";
        localNotifEndCycle.soundName=@"best_guitar_tone.mp3";
        localNotifEndCycle.fireDate = [NSDate dateWithTimeInterval:180*i sinceDate:now];
        [[UIApplication sharedApplication] scheduleLocalNotification: localNotifEndCycle];
     }
     }

#5


1  

-(void)schedulenotificationfortimeinterval:(NSString *)id1
{
    NSLog(@"selected value %d",selectedvalue);

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"MMM dd,yyyy hh:mm a"];

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


   // localNotification2. fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:0];

    if(selectedvalue==0)
    {
        NSLog(@"dk 0000");

        localNotification2.fireDate = [formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] ;//now

        localNotification2.applicationIconBadgeNumber = 1;

        localNotification2.repeatInterval=NSDayCalendarUnit;

    }
    if(selectedvalue==1)
    {
        NSLog(@"dk 1111");

        for( int u = 0; u <= 2 ;u++)
        {
        localNotification2.fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:43200.0*u] ;// 12 hr 
            localNotification2.repeatInterval=NSDayCalendarUnit;

            localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

            localNotification2.alertAction = @"Notification";
            localNotification2.soundName=UILocalNotificationDefaultSoundName;
            localNotification2.applicationIconBadgeNumber = 2;


            [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

            NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

        }

     //  localNotification2.repeatInterval=NSDayCalendarUnit;

     }

    if(selectedvalue==2)
    {
        NSLog(@"dk 22222");
        for( int u = 0; u <= 3 ;u++)
        {
            localNotification2.fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:28800.0*u] ;//8 hr 
            localNotification2.repeatInterval=NSDayCalendarUnit;

            localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

            localNotification2.alertAction = @"Notification";
            localNotification2.soundName=UILocalNotificationDefaultSoundName;
            localNotification2.applicationIconBadgeNumber = 3;


            [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

            NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

        }


      //  localNotification2.repeatInterval=NSDayCalendarUnit;
    }

    if(selectedvalue==3)
    {
       NSLog(@"dk 3333");
        for( int u = 0; u <= 4 ;u++)
        {
            localNotification2.fireDate = [[formatter dateFromString:[NSString stringWithFormat:@"%@ %@",[MedicationDict  valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]]] dateByAddingTimeInterval:21600.0*u] ;//6 hr
            localNotification2.repeatInterval=NSDayCalendarUnit;

            localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

            localNotification2.alertAction = @"Notification";
            localNotification2.soundName=UILocalNotificationDefaultSoundName;
            localNotification2.applicationIconBadgeNumber = 4;


            [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

            NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

        }


      //  localNotification2.repeatInterval=NSDayCalendarUnit;
   }  
 //   localNotification2.repeatInterval=NSDayCalendarUnit;

    NSLog(@"date is %@ %@",[MedicationDict valueForKey:@"Starting"],[MedicationDict valueForKey:@"Ending"]);

    localNotification2.timeZone = [NSTimeZone localTimeZone];


     localNotification2.alertBody = [NSString stringWithFormat:@"Friendly reminder to take %@ %@ at %@.",[MedicationDict objectForKey:@"DrugName"],[MedicationDict objectForKey:@"Frequency"],[MedicationDict objectForKey:@"Ending"]];

    localNotification2.alertAction = @"Notification";
    localNotification2.soundName=UILocalNotificationDefaultSoundName;
    //localNotification2.applicationIconBadgeNumber = 1;

  //  infoDict = [NSDictionary dictionaryWithObject:id1 forKey:@"did"];

  //  localNotification2.userInfo = infoDict;

  //  [[UIApplication sharedApplication] scheduleLocalNotification:localNotification2];

 //   NSLog(@"all notifications %@",[[UIApplication sharedApplication]scheduledLocalNotifications]);

   // [[UIApplication sharedApplication] cancelAllLocalNotifications];//dk
 }

#6


0  

You can set any time interval you want, if you set up separate notifications for each time you want a notification to fire. You then have to manage them, and if you are not an app that is at present allowed to run in the background, you'll have to refresh them by having the user run your app to do so. Having accomplished this, I can tell you it is a major PITA.

如果您希望每次触发通知时都设置单独的通知,则可以设置所需的任何时间间隔。然后,您必须管理它们,如果您不是目前允许在后台运行的应用程序,则必须通过让用户运行您的应用程序来刷新它们。完成这项工作后,我可以告诉你它是一个主要的PITA。

#7


-6  

notif.repeatInterval = NSDayCalendarUnit;

notif.repeatInterval = NSDayCalendarUnit;