Я просто скачал xcode и попытался сделать пример локального уведомления. Вопрос в том, работает ли локальное уведомление в симуляторе?
Благодарю вас
Я просто скачал xcode и попытался сделать пример локального уведомления. Вопрос в том, работает ли локальное уведомление в симуляторе?
Благодарю вас
Да, локальные уведомления работают с симулятором. Однако убедитесь, что вы реализуете приложение: 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];
Легко думать, что вы неправильно используете тестовый код, и вы просто не обрабатываете событие во время работы приложения.
Другая информация, которую вы могли бы найти, для любого, кто сталкивается с этим старым вопросом: 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
"
Локальные уведомления работают на симуляторе, push notifications не
Да. Локальное уведомление работает с локальным уведомлением. Нажмите здесь для apple doc.
Чтобы протестировать локальные уведомления в симуляторе iphone, выполните следующие действия:
Эти шаги помогли мне всегда получать успешные локальные уведомления.