Обработка системных оповещений iOS

#ios #objective-c

#iOS #objective-c

Вопрос:

Я создаю приложение, которое должно подсчитывать, как долго пользователь остается без использования своего устройства. Для этого у меня есть таймер, который останавливается, когда приложение приостанавливается. Но, прежде чем остановить таймер, мне нужно проверить две вещи:

  • Входящий вызов: пользователь может ответить или отклонить вызов. Если он отклонит вызов, таймер продолжит отсчет. В противном случае таймер остановится, и когда приложение снова активируется, оно покажет предупреждение.

  • Системные предупреждения iOS: напоминания, события календаря, низкий заряд батареи и т. Д. Мне нужно определить, приостановлено ли приложение одним из таких предупреждений.

Приложение уже обрабатывает первый случай. Все работает для входящих вызовов.

Проблема в том, что я не знаю, как проверить второй случай. Как я могу определить, приостановлено ли приложение одним системным предупреждением iOS? Есть ли какой-нибудь способ сделать это?

Комментарии:

1. Вы хотите запретить пользователю отвечать на входящие вызовы? Теперь я могу сказать вам, что Apple немедленно отклонит это, вы не можете запретить пользователю отвечать на телефонный звонок. На самом деле все ваше приложение звучит так, как будто оно будет отклонено. И, исходя из вашего заголовка, вы не можете обрабатывать системные оповещения iOS, они обрабатываются ОС, а не вами в вашем приложении, вы можете обрабатывать свои собственные оповещения, и все.

2. @Popeye — Привет, спасибо за ответ, но я не хочу ничего отключать. Я просто хочу остановить таймер внутри моего приложения. Пользователь может ответить на входящий вызов, но таймер прекратит отсчет, и пользователь не получит вознаграждение. Фактически, мое приложение уже было принято Apple. Я хочу знать, могу ли я получить тип отправленного предупреждения ОС.

3. ХОРОШО, ваш вопрос звучит так, как будто вы хотите запретить пользователю отвечать на телефонный звонок. Вот почему я считаю, что вы не получили никакого внимания, то, что вам нужно, кажется достаточно простым (хотя и не рядом с моим Mac, чтобы дать проверенный ответ), поэтому, возможно, просто перефразируйте свой вопрос

4. вы нашли какое-либо решение?

5. @Vats нет, я этого не делал. Мы попробовали несколько обходных путей, например, подсчитать количество времени, в течение которого приложение работало в фоновом режиме.