Multiple UNUserNotifications not firing

本小妞迷上赌 提交于 2019-11-28 01:24:59

Give a different "requestWithIdentifier" and "time delay" for each notification and try, may it works for you.

Girish Chauhan

MULTIPLE NSUSERNOTIFICATION FIRE ON CUSTOM DATE AND TIME

UNUserNotificationCenter *center=[UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:( UNAuthorizationOptionSound | UNAuthorizationOptionAlert)
                      completionHandler:^(BOOL granted, NSError * _Nullable error) {
                          if (!error) {
                              NSLog(@"request authorization succeeded!");
                              // [self showAlert];
                          }
                      }];

UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init];

objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@"શ્રી હરિ જયંતિ!" arguments:nil];
objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@"જય સ્વામિનારાયણ \nઆવતીકાલે એકાદશી છે!"
                                                                    arguments:nil];
objNotificationContent.sound = [UNNotificationSound defaultSound];

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"nirnay" withExtension:@"jpg"];
NSError *error;
UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"nirnay" URL:fileURL options:nil error:&error];
objNotificationContent.attachments = @[attachment];

/// 4. update application icon badge number
// objNotificationContent.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);



for (int i=0; i<5; i++)
{
    int hours=11;
    int mint=46+i;

    NSString *myDateAsAStringValue=@"2017-03-22";
    NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    // or @"yyyy-MM-dd hh:mm:ss a" if you prefer the time with AM/PM


    NSDate *myDate = [dateFormatter dateFromString: myDateAsAStringValue];
    NSDate *pickerDate = myDate;
    NSLog(@"pickerDate - %@",pickerDate);
    NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init];
    //  [dateFormatter setDateFormat:DT_FORMATE_BIRTHDATE];
    [dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    [dateFormatter2 setTimeZone:gmt];
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDateComponents *timeComponents = [calendar components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay |NSCalendarUnitHour | NSCalendarUnitMinute|NSCalendarUnitSecond)
                                                   fromDate:pickerDate];
    [timeComponents setHour:hours];
    [timeComponents setMinute:mint];
    [timeComponents setSecond:0];
    NSDate *dtFinal = [calendar dateFromComponents:timeComponents];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
    NSString *fierDate = [formatter stringFromDate:dtFinal];

    NSLog(@"fierDate - %@",fierDate);
    UNCalendarNotificationTrigger *trigger3 = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:timeComponents
                                                                                                       repeats:NO];



    UNNotificationRequest *request3 = [UNNotificationRequest requestWithIdentifier:[NSString stringWithFormat:@"ten%d",i]
                                                                           content:objNotificationContent trigger:trigger3];

    /// 3. schedule localNotification
    [center addNotificationRequest:request3 withCompletionHandler:^(NSError * _Nullable error) {
        if (!error) {
            NSLog(@"Local Notification succeeded By calender");
        }
        else {
            NSLog(@"Local Notification failed");
        }
    }];


}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!