Локальное уведомление в iOS 10 и 11

Как я могу мгновенно отображать локальные уведомления на работающих устройствах iOS 10 и 11, мое требование к приложению - мгновенно отображать локальные уведомления пользователю, так как нам нужно сначала запросить локальное уведомление, а затем система запланировала уведомление. Я запускаю этот код для отображения локального уведомление.

UNMutableNotificationContent *content = [UNMutableNotificationContent new];
content.title = title;
content.body = body;
content.sound = [UNNotificationSound defaultSound];

UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO];

UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];
/// 3. schedule localNotification
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
    if (!error) {
        NSLog(@"Local Notification succeeded");
    }
    else {
        NSLog(@"Local Notification failed");
    }
}];

person Pias    schedule 02.10.2017    source источник
comment
см. это stackoverflow.com/questions/39941778/   -  person Saurabh Jain    schedule 02.10.2017
comment
@Saurabh, моя реализация такая же, только они использовали триггер календаря, а я использовал триггер временного интервала, мой вопрос в том, что я хочу показывать уведомление мгновенно, но мой приведенный выше код его не показывает.   -  person Pias    schedule 02.10.2017
comment
Если вы хотите отображать уведомления, когда ваше приложение активно, вам не повезло. Эти уведомления предназначены для уведомления пользователя о действиях, когда приложение находится в фоновом режиме.   -  person Julian F. Weinert    schedule 03.10.2017
comment
@JulianF.Weinert Согласно новым UNUserNotifications, мы можем видеть уведомления, когда приложение активно, с помощью делегата willPresent. См. эту ссылку stackoverflow.com/a/39715402/2545465.   -  person Rajan Maheshwari    schedule 04.10.2017
comment
обратитесь к этой полезной ссылке с очень хорошим примером. github.com/arasu01/Local-Notification-Example-iOS1   -  person Pramod More    schedule 29.03.2018
comment
@PramodMore, спасибо   -  person Pias    schedule 29.03.2018


Ответы (1)


Вы можете попробовать это ....

        [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        UNAuthorizationOptions options = UNAuthorizationOptionAlert + UNAuthorizationOptionSound;

        // Request using shared Notification Center
        [center requestAuthorizationWithOptions:options
                              completionHandler:^(BOOL granted, NSError * _Nullable error) {
                                  if (granted) {
                                      NSLog(@"Notification Granted");
                                  }
                              }];

        // Notification authorization settings
        [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
            if (settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
                NSLog(@"Notification allowed");
            }
        }];

        UNMutableNotificationContent *content = [UNMutableNotificationContent new];
        content.title = title;
        content.body = body;
        content.sound = [UNNotificationSound defaultSound];
        NSDate *date = [NSDate date];

        // Trigger with date
        NSDateComponents *triggerDate = [[NSCalendar currentCalendar]
                                         components:NSCalendarUnitYear +
                                         NSCalendarUnitMonth + NSCalendarUnitDay +
                                         NSCalendarUnitHour + NSCalendarUnitMinute +
                                         NSCalendarUnitSecond fromDate:date];
        UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:triggerDate
                                                                                                          repeats:NO];

        // Scheduling the notification
        UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"Identifier" content:content trigger:trigger];

        [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
            if (error != nil) {
                NSLog(@"Something went wrong: %@",error);
            }
        }];
person Jana iOS    schedule 25.09.2018