Подтвердить что ты не робот

Местное уведомление iphone в симуляторе

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

Благодарю вас

4b9b3361

Ответ 1

Да, локальные уведомления работают с симулятором. Однако убедитесь, что вы реализуете приложение: 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];

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

Ответ 2

Другая информация, которую вы могли бы найти, для любого, кто сталкивается с этим старым вопросом: 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"

Ответ 3

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

Ответ 4

Да. Локальное уведомление работает с локальным уведомлением. Нажмите здесь для apple doc.

Ответ 5

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

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

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