Я хочу, чтобы мое приложение выполняло определенные действия, когда приложение запускается щелчком по уведомлению. Я хочу делать эти конкретные вещи, когда приложение уже работает в фоновом режиме, НО ТАКЖЕ, когда приложение запускается из SCRATCH (не работает в фоновом режиме) щелчком по уведомлению.
Когда приложение запускается из фона щелчком по уведомлению, я получаю уведомление через:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
= > НЕ ПРОБЛЕМА!
Когда приложение запускается с нуля с помощью щелчка на уведомлении, я хотел бы получить уведомление через:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
}
Но launchOptions всегда нуль!! Нуль, когда приложение запускается с нуля с помощью щелчка на значке приложения (обычно), но также, когда приложение запускается с нуля с помощью щелчка уведомления (не нормально).
Кто-нибудь знает, как решить эту проблему?
Спасибо!!!
ИЗМЕНИТЬ 1
Вот как мои уведомления создаются (вопрос Джо):
NSDictionary *userInfo = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:notifText,latitudeString,longitudeString,nil]
forKeys:[NSArray arrayWithObjects:@"notifText",@"latitude",@"longitude", nil]];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = itemDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertBody =msg;
localNotif.alertAction = @"Ok";
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;
localNotif.userInfo = userInfo;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];
ИЗМЕНИТЬ 2 (ОТВЕТ НА МОЙ ВОПРОС!:))
Вот процедура, которую я использовал для отладки моего приложения, но... эта процедура неверна!
- Я настроил свой отладчик с параметром "Подождите, пока MyApp.app для запуска" в меню "Редактировать схему"
- Я впервые запустил приложение с XCode (запуск с нуля). XCode отображает сообщение "Ожидание запуска MyApp" = > Я НАЖМИТЕ НА МОЕЙ APP ICON, чтобы запустить приложение.
- Запущено приложение = > Я нажал на кнопку home = > отображается уведомление
- Я нажал кнопку остановки в XCode, чтобы закрыть приложение, которое я перезапустил с помощью XCode = > XCode снова отображает сообщение "Ожидание моего сообщения MyApp" = > Я НАЖМИТЕ НА УВЕДОМЛЕНИЕ в строке состояния для запуска приложения
- = > launchOptions - это nil!
launchOptions, равный nil, связан с тем, что перезапуск приложения с XCode (в этом случае с параметром "Ожидание моего MyApp для запуска" ) удаляет уведомления, даже если он все еще отображается в строке состояния...
Чтобы иметь возможность отлаживать информацию о том, что является содержимым launchOptions после перезапуска приложения с нуля, щелкнув по уведомлению, кажется, что единственный способ показать этот контент в UIAlert, как указано в ответе Tammo Фриз. Итак, используйте следующее для отладки в этом конкретном случае:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"options" message:[launchOptions[UIApplicationLaunchOptionsLocalNotificationKey] description] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
return YES;
}
Спасибо всем за вашу помощь!!!!