У меня есть локальное уведомление. Как только его уволили, скажем, мое приложение находится в режиме «сна», на котором нажата кнопка дома, или я уйду из нее. Теперь уведомление получено. Я вижу красный тег в своем приложении, и когда я нажимаю на приложение, он должен запускать didReceiveLocalNotification
, но это не так. Как я могу сделать это, когда открываю приложение?Локальное уведомление Не отображается, когда приложение открывается
ответ
Метод didReceiveLocalNotification
вызывается только в том случае, если приложение работает на переднем плане. Если вы видите значок и нажмите на приложение, чтобы запустить его, вам необходимо обработать локальное уведомление, используя application:willFinishLaunchingWithOptions:
(или application:didFinishLaunchingWithOptions:
). Чтобы получить локальное уведомление одним из этих двух методов, используйте UIApplicationLaunchOptionsLocalNotificationKey
в качестве ключа к словарю параметров ,
[редактировать] Из документации UILocalNotification:
, если местное уведомление только значки значка приложения, а пользователя в ответ запускает приложение, в приложении: didFinishLaunchingWithOptions: метод вызывается, но не Объект UILocalNotification включен в словарь опций.
-(void)alarmNotification
{
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSDate *newdate = timePicker.date;
NSLog(@"pickerdate:%@",newdate);
NSDate *pickerDate =[newdate dateByAddingTimeInterval:-60*1];
NSLog(@"pickerdate:%@",timePicker.date);
// Break the date up into components
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
fromDate:pickerDate];
NSDateComponents *timeComponents = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit)
fromDate:pickerDate];
// Set up the fire time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
// Notification will fire in one minute
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
[dateComps release];
localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = itemDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
// Notification details
localNotif.alertBody = txtMeetingName.text;
// Set the action button
localNotif.alertAction = NSLocalizedString(@"View!", nil);
localNotif.soundName = UILocalNotificationDefaultSoundName;
// Specify custom data for the notification
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"someValue" forKey:@"someKey"];
localNotif.userInfo = infoDict;
localNotif.applicationIconBadgeNumber =1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
Затем реализовать этот код ......
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif {
// Handle the notificaton when the app is running
NSDateComponents *comps = [[NSCalendar currentCalendar] components:notif.repeatInterval fromDate:notif.fireDate toDate:[NSDate date] options:0];
// you can set your own sound
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/win.wav", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
UIAlertView *alertView =
[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"move on", nil)
message:[NSString stringWithFormat:@"You have to start %@ meeting within 5 minute",notif.alertBody]
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"OK", nil), nil];
notif.soundName = UILocalNotificationDefaultSoundName;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
if (audioPlayer == nil)
NSLog(@"error%@",[error description]);
else
[audioPlayer play];
[alertView show];
[alertView release];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex: (NSInteger)buttonIndex{
if (buttonIndex==0) {
[audioPlayer stop];
}
NSLog(@"U HAVE CLICKED BUTTON");
}
надеюсь, что это поможет вам .....
Я хочу получить его в didFinishLaunchOptions, он работает хорошо с didReceive. Фактически, когда приложение закрыто и открыто нормально, в отличие от push-уведомления, оно никогда не появляется в launchOptons –
Когда вы устанавливаете дату пожара, то есть у вас установить свойство userInfo вашего объекта уведомления ??? & r u проверить его на устройстве или на тренажере?
Уведомление запускается Просто отлично. Когда я нажимаю на уведомление, он вызывает callReceiveNotification. Однако, в отличие от Push-уведомлений, когда приложение закрыто, оно не будет отображаться в параметрах запуска в файле didFinishWithLaunchOptions –
. Ok ... но у вас установлено свойство userinfo вашего объекта уведомления? – Kalyani
@MuhammadUmar & r u тестирование на симуляторе или на реальном устройстве – Kalyani
- 1. Локальное уведомление толкается, но приложение не открывается
- 2. Локальное уведомление отображается без didFinishLaunchingWithOptions:
- 3. Приложение не открывается, когда локальное уведомление нажимает на Windows Phone 8.1 приложение?
- 4. android Локальное уведомление, когда приложение остановлено
- 5. Не открывайте приложение, когда локальное уведомление нажимается на iOS
- 6. Локальное уведомление в iOS
- 7. Приложение не открывается после нажатия на Уведомление
- 8. Как назначить действие, когда локальное уведомление отображается в Swift
- 9. Локальное уведомление не работает, когда экран заблокирован
- 10. Уведомление Android gcm не открывается Приложение
- 11. Локальное уведомление
- 12. локальное уведомление звук не работает
- 13. Локальное уведомление
- 14. Локальное уведомление не называется
- 15. Как отображать локальное уведомление, когда приложение PhoneGap сведено к минимуму
- 16. Невозможно обработать локальное уведомление, когда приложение было прекращено
- 17. Показывать (локальное) уведомление, когда пользователь закрывает приложение из переключателя задач
- 18. Локальное уведомление при загрузке приложения
- 19. Как получить локальное уведомление, когда приложение закрыто в iOS
- 20. Локальное уведомление, applicationIconBadgeNumber остается, когда приложение находится на переднем плане
- 21. Локальное уведомление не отображается при попадании в зону
- 22. Локальное уведомление не сбрасывается фоном
- 23. Локальное уведомление отключает приложение android java
- 24. Локальное уведомление заменяется
- 25. call rest-api, когда приложение открывается через push-уведомление
- 26. локальное уведомление с вызовом API
- 27. уведомление, когда приложение не запущено или завершено
- 28. Локальное уведомление Android
- 29. Уведомление не отображается, когда приложение находится в фоновом режиме
- 30. Push-уведомление не отображается, когда приложение работает в кордове
параметры запуска возвращают нуль ..... я могу видеть уведомление на панели уведомлений, но параметры запуска возвращают нуль, когда я открываю приложение –
Был ли словарь launchOptions nil? Если нет, то каково его содержание? – GoZoner
Да, это неправильно. Это ноль. Он должен что-то вернуть. Я попробовал сделать простое уведомление в didEnterBackground. Открытое приложение, нажатие кнопки дома. Закройте приложение, используя Xcode, а затем после получения уведомления отредактируйте его с помощью Xcode. Еще нет. –