локальное уведомление iphone в симуляторе - PullRequest
37 голосов
/ 28 августа 2010

Я только что скачал xcode и пытаюсь сделать пример локального уведомления.Вопрос в том, работает ли локальное уведомление в симуляторе?

спасибо

Ответы [ 5 ]

67 голосов
/ 22 апреля 2011

Да, локальные уведомления работают с симулятором. Однако убедитесь, что вы реализуете application:didreceiveLocalNotification в своем делегате приложения, если хотите видеть уведомление, когда ваше приложение находится на переднем плане:

- (void)application:(UIApplication *)application
    didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MyAlertView"
        message:notification.alertBody
        delegate:self cancelButtonTitle:@"OK"
        otherButtonTitles:nil];
    [alertView show];
    if (alertView) {
        [alertView release];
    }
}

В противном случае убедитесь, что вы запланировали уведомление на некоторое время в будущем, затем закройте приложение , чтобы увидеть образец работы Apple:

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil) return;
NSDate *fireTime = [[NSDate date] addTimeInterval:10]; // adds 10 secs
localNotif.fireDate = fireTime;
localNotif.alertBody = @"Alert!";
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];

Легко подумать, что вы не реализуете тестовый код правильно, и вы просто не обрабатываете событие во время работы приложения.

20 голосов
/ 11 июня 2015

Еще один вопрос, который вы можете найти, для тех, кто сталкивается с этим старым вопросом: iOS 8 представила новые разрешения на уведомления;и ваше приложение должно явно запросить их.

В вашем AppDeligate.m:

- (BOOL)application:(UIApplication *)application 
          didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //register local notifications
    if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    }

    //the rest of your normal code

    return YES;
}

Если вы этого не сделаете, ваше уведомление никогда не сработает, и вы получите замечательное сообщение в журналах, подобное этому: "Attempting to schedule a local notification <UIConcreteLocalNotification: 0x7ae51b10>{... alert details ...} with an alert but haven't received permission from the user to display alerts "

7 голосов
/ 28 августа 2010

локальные уведомления работают на симуляторе, push-уведомления не

1 голос
/ 15 октября 2010

Да Локальное оповещение работает на локальное оповещение. Нажмите здесь для Apple Doc.

0 голосов
/ 26 ноября 2013

Чтобы проверить локальные уведомления в симуляторе iphone, выполните следующие действия:

  1. Поскольку время симулятора точно такое же, как в вашем MacBook, измените время вашего Mac на 1 минуту, предшествующую вашему желаемому времени (когда вы ожидаете срабатывания локального уведомления)
  2. Перезапустить симулятор (это неудобно, но иногда кажется, что симулятору iphone не удается мгновенно получить текущее время обновления)
  3. Запустите симулятор еще раз (может быть, запустив ваше приложение из xcode, и в этом случае вы должны нажать кнопку home, чтобы отправить приложение в фоновый режим). Как только время истечет, вы должны получить уведомление.

Эти шаги помогли мне всегда получать успешные локальные уведомления.

...