Вы правы. Поведение несовместимо с документацией. Отложить документацию и сосредоточиться на фактическом поведении; Суть вопроса, по-видимому, заключается в следующем: если ваше приложение становится активным пользователем, взаимодействующим с уведомлением, вы получите указатель на уведомление, а если пользователь непосредственно коснется значка вашего приложения, вы этого не сделаете.
Для иллюстрации. Если вы представляете уведомление в стиле оповещения, и пользователь нажимает кнопку действия, или если, как в вашем случае, вы представляете уведомление баннера, и пользователь нажимает на него, вы получите указатель на уведомление одним из двух способов:
Если ваше приложение находилось в состоянии «Не работает»:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
UILocalNotification *launchNote = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (launchNote){
// I recieved a notification while not running
}
}
Если ваше приложение работает в любом состоянии:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
// I recieved a notification
}
В случае, если пользователь решает отменить уведомление в стиле оповещения, это уведомление исчезает.
Поистине досадная противоречивая часть заключается в том, что если вы отправляете баннерное уведомление и пользователь нажимает на ваш значок, вы, похоже, не сможете найти ссылку на представленные уведомления в центре уведомлений. то есть они не отображаются в массиве [[UIApplication sharedApplication] scheduledLocalNotifications]
, предположительно потому, что они больше не запланированы, а теперь представлены.
Итак, вкратце; Документация неверна. И есть другие досадные несоответствия. Если это вызывает у вас проблемы, вы должны сообщить об ошибке в Apple.