Local Notification in background

14,486

Solution 1

-(void)insert:(NSDate *)fire
{
    [[UIApplication sharedApplication]cancelAllLocalNotifications];
    self.localNotification = [[UILocalNotification alloc] init];
    if (self.localNotification == nil)
    {
        return;
    }
    else
    {
        self.localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60];
        self.localNotification.alertAction = nil;
        self.localNotification.soundName = UILocalNotificationDefaultSoundName;
        self.localNotification.alertBody = @"Hey looks like you're meeting up with %@, why don't you let your other friends know what fun they're missing out on? Share a photo :)";
        self.localNotification.alertAction = NSLocalizedString(@"Read Msg", nil);
        self.localNotification.applicationIconBadgeNumber=1;
        self.localNotification.repeatInterval=0;
        [[UIApplication sharedApplication] scheduleLocalNotification:self.localNotification];
    }
}

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif
{
    [[UIApplication sharedApplication]cancelAllLocalNotifications];
    app.applicationIconBadgeNumber = notif.applicationIconBadgeNumber -1;

    notif.soundName = UILocalNotificationDefaultSoundName;

    [self _showAlert:[NSString stringWithFormat:@"%@",Your msg withTitle:@"Title"];

}

- (void) _showAlert:(NSString*)pushmessage withTitle:(NSString*)title
{
    [self.alertView_local removeFromSuperview];
    self.alertView_local = [[UIAlertView alloc] initWithTitle:title message:pushmessage delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [self.alertView_local show];

    if (self.alertView_local)
    {
    }
}

Hope this will help you :)

Solution 2

addTimerInterval is depcrecated in iOS 4.0, make sure you deployment target. You can use.

- (id)dateByAddingTimeInterval:(NSTimeInterval)ti

Also make sure you set the correct value for fireDate

Solution 3

Please Use below code.

 self.localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60];
    self.localNotification.alertAction = nil;
    self.localNotification.soundName = UILocalNotificationDefaultSoundName;
    self.localNotification.alertBody = @"Hey looks like you're meeting up with %@, why don't you let your other friends know what fun they're missing out on? Share a photo :)";
    self.localNotification.alertAction = NSLocalizedString(@"Read Msg", nil);
    self.localNotification.applicationIconBadgeNumber=1;
    self.localNotification.repeatInterval=0;
Share:
14,486
Sundeep Saluja
Author by

Sundeep Saluja

iOS app developer at TechMahindra

Updated on June 22, 2022

Comments

  • Sundeep Saluja
    Sundeep Saluja almost 2 years

    Can anyone please tell me how to get a UILocalNotification while my app is in the background.

    I am posting my code here. Thanks in advance.

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if (localNotif == nil)
        return;
    localNotif.fireDate =[startDate addTimeInterval:60];
    NSLog(@"%@",localNotif.fireDate);
    
    localNotif.timeZone = [NSTimeZone defaultTimeZone];     
    localNotif.alertAction = @"View";
    localNotif.soundName = UILocalNotificationDefaultSoundName;
    
    NSString *notifStr=[NSString stringWithFormat:@"Hey looks like you're meeting up with %@, why don't you let your other friends know what fun they're missing out on? Share a photo :)",[itemDict objectForKey:@"fname"]];
    
    NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:notifStr ,@"notifKey",nil];
    localNotif.userInfo = infoDict;
    
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
    [localNotif release];
    
  • Chanchal Raj
    Chanchal Raj over 8 years
    For iOS 8 or above, you need to ask for user permission too: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; }
  • Avijit Nagare
    Avijit Nagare almost 8 years
    Also, Local notification doesn't put alert/banner while app is background.