Я не абсолютно уверен в том, как иметь дело с различными состояниями обработки локального уведомления (или нажатия на это).корректно обрабатывает параметры запуска и локальные уведомления
эти различные сценарии, насколько я их понимаю (поправьте меня, если я ошибаюсь):
а. приложение было на переднем плане
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}
становится называется и: application.applicationState == UIApplicationStateActive
б. приложение было в фоновом режиме
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}
становится называется и: application.applicationState == UIApplicationStateInactive
гр. приложение было прекращено, так:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}
становится называется первой и послесловие:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}
становится называется где application.applicationState == UIApplicationStateActive (так как он стал активным некоторое время после того, как didFinishLanching ...
в каждом из этих 3 сценариев я должен действовать по-другому:.
а, если приложение было на первом плане, я хотел бы показать эль rt, который показывает тело notificaiton, и нажимайте некоторые контроллеры представлений в стеке, если пользователь отклоняет предупреждение с помощью кнопки «Продолжить».
b. если приложение было в фоновом режиме, и пользователь нажал на предупреждение, то я хотел бы автоматически нажимать контроллеры представления в стек, так как нажатие на предупреждение пользователя указывает, что он хочет следовать его значению.
c. те же сценарии, что и b. пользователь нажал на предупреждение и ожидает увидеть соответствующие представления.
Мой вопрос в том, как/где я должен нажимать соответствующие представления на навигационный контролер и как отображать предупреждение при получении уведомления на переднем плане?
Проблема заключается в том, что сценарий c содержит сценарий a. это означает, что после того, как didFinishlaunching получил вызов (неважно, обрабатывал ли я уведомление там или нет), тогда didRecieveLocalNotification получает вызов (как если бы я получил уведомление на переднем плане), но в этом случае я бы не хотел отображать предупреждение. .
Является ли я неверным о предположениях для начала?
Для сценария C 'didReceiveLocalNotification' не вызывается, вызывается только' doneFinishLaunchingWithOptions'. Поскольку это методы делегирования приложений, они могут получать события в любое время, и вы можете делать все, что от вас требуется. Может быть, задавать более конкретные вопросы, по одному за раз. –
@MarcusAdams, thx. Я на самом деле задал очень конкретный вопрос и последовал за ним со мной. Сначала у меня были свои предположения. И я сделал, как вы сказали, метод didReceiveLocalNotification не вызывается в сценарии C, что упрощает все. Переходите и конвертируйте свой комментарий в ответ, и я соглашусь с ним. –