Ответ 1
Вы правы. Поведение несовместимо с документацией. Отложив документацию и сосредоточив внимание на фактическом поведении; Суть дела заключается в следующем: если ваше приложение активируется пользователем, взаимодействующим с уведомлением, вы получите указатель на уведомление, если пользователь сразу же нажимает значок приложения.
Чтобы проиллюстрировать. Если вы представляете уведомление о стиле предупреждения, и пользователь вводит кнопку действия или, если в вашем случае вы представляете баннерное уведомление, а пользователь указывает, что вы получите указатель на уведомление одним из двух способов:
Если ваше приложение находилось в состоянии "Не работает":
-(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.