iPhone iOS: локальные уведомления не отображаются - PullRequest
0 голосов
/ 22 января 2012

Я пишу приложение, которое отправляет пользователю уведомление через Центр уведомлений, когда приближается дата события.Но когда я устанавливаю дату в окне выбора даты и закрываю приложение, уведомление не появляется.Я уже включил Push-уведомления в своих профилях обеспечения.Это может быть из-за моей области objectForKey.У меня есть 2 наконечника (один для iPhone, другой для iPad) с именами ImportantDatesViewController_iPhone1 и ImportantDatesViewController_iPad1.Должен ли я изменить область objectForKey на имя пера вместо просто «ImportantDatesViewController»?И мои имена файлов .h и .m также просто ImportantDatesViewController.Извините, я все еще очень новичок в этом и учусь на ходу.Вот весь код в моем проекте, который связан с центром уведомлений, это то, что я поместил в свой контроллер представления:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotif = [[UILocalNotification alloc] init];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"mm'/'dd'/'yyyy"];

NSDate *eventDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"ImportantDatesViewController.selectedDate"];


localNotif.fireDate = [eventDate dateByAddingTimeInterval:-60*60*60];
localNotif.timeZone = [NSTimeZone defaultTimeZone];

localNotif.alertBody = @"Event coming in three days!";

localNotif.alertAction = nil;

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];    

return YES;

}

Я также добавил этот код в свой метод didFinishLaunchingWithOptionsв App Delegate внизу, и я подумал, что это поможет:

[[UIApplication sharedApplication]registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound];

Любая помощь очень ценится, спасибо!

Ответы [ 3 ]

4 голосов
/ 22 января 2012

Вы велели ему немедленно запустить уведомление, когда вы устанавливаете его, и вы настраиваете его на некоторое время до этого момента, установив (СЕЙЧАС) -60 * 60 * 60. Уведомление уже прошло.

[[UIApplication sharedApplication]presentLocalNotificationNow:localNotif];  

если вы хотите установить его на определенное время:

 [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];

Если указанное значение равно нулю или является датой в прошлом, уведомление доставляется немедленно.В качестве примечания убедитесь, что для часовых поясов и локалей выбраны те, которые вам нужны.

1 голос
/ 26 марта 2014

Вот пример кода для LocalNotification, который работал для моего проекта.

Этот блок кода в файле AppDelegate:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [launchOptions valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
        // Override point for customization after application launch.
        return YES;
    }

    // This code block is invoked when application is in foreground (active-mode) 
    -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

        UIAlertView *notificationAlert = [[UIAlertView alloc] initWithTitle:@"Notification"    message:@"This local notification" 
        delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

        [notificationAlert show];
       // NSLog(@"didReceiveLocalNotification");
    }

Этот блок кода в файле .m любого ViewController:

-(IBAction)startLocalNotification {  // Bind this method to UIButton action
    NSLog(@"startLocalNotification");

    UILocalNotification *notification = [[UILocalNotification alloc] init];
    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:7];
    notification.alertBody = @"This is local notification!";
    notification.timeZone = [NSTimeZone defaultTimeZone];
    notification.soundName = UILocalNotificationDefaultSoundName;
    notification.applicationIconBadgeNumber = 10;

    [[UIApplication sharedApplication] scheduleLocalNotification:notification];    
}

Приведенный выше код отображает AlertView через 7 секунд после нажатия на кнопку, которая связывает «startLocalNotification» Если приложение работает в фоновом режиме, оно отображает BadgeNumber как 10 со звуком уведомления по умолчанию.

1 голос
/ 31 июля 2012
UILocalNotifications *localNotif = [[UILocalNotification alloc] init];

   if (localNotif == nil) return;
  NSDate *fireTime = [[NSDate date]   dateByAddingTimeInterval:900] ;  //15 min

            localNotif.fireDate = fireTime;
            localNotif.alertBody = @"Parking your CAR 15 Minutes reached..";
            //    localNotif.repeatInterval=kCFCalendarUnitMinute;
            [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...