Могу ли я получить доступ к переменной приложения внутри AppDelegate, когда приложение находится в фоновом режиме? - PullRequest
0 голосов
/ 23 апреля 2020

Я работаю над приложением чата в Reaction-native iOS Я хочу показывать количество значков на значке основного приложения при получении нового уведомления в фоновом режиме. Теперь я могу показать количество значков в значке основного приложения. Но это увеличивает количество для каждого уведомления. Я хочу ограничить это на основе чатов. Для этого мне нужны чаты с новым сообщением. Могу ли я получить доступ к переменным приложения в didReceiveRemoteNotification методе Appdelegate.m, когда приложение работает в фоновом режиме?

1 Ответ

1 голос
/ 23 апреля 2020

Пока ваш код работает, вы можете получить доступ практически ко всему, но есть некоторые ограничения.

Вопрос здесь в том, что вы считаете «переменными приложения». Скорее всего, это объекты, которые уже находятся в вашей памяти и могут быть доступны в didReceiveRemoteNotification или любом другом методе без каких-либо проблем.

Если их нет в вашей памяти, могут возникнуть некоторые ограничения, но они не необходимо недостижимо Некоторые случаи, которые могут иметь или не иметь проблемы:

  • Чтение с диска, если файлы зашифрованы вашей ОС
  • Ресурсы находятся на удаленном сервере, и вам необходимо связаться через inte rnet
  • Ваши данные находятся в графическом процессоре или требуют обработки в графическом процессоре

Если ваш didReceiveRemoteNotification уже вызывается, у вас не должно быть никаких проблем с этим. Но уведомления не обязательно вызывают этот метод. Полезная нагрузка уведомления уже должна содержать счетчик значков, и ваша ОС должна иметь возможность правильно отображать значок, а не просто добавлять к нему значение.

Приложение может не просто находиться в фоновом режиме. Это может быть приостановлено или даже прекращено. Вполне возможно, что ваше приложение будет пробуждено от уведомления, и в этом случае вы не можете ожидать вызова didReceiveRemoteNotification. И даже если это так, вы не можете ожидать, что у вас все еще есть какая-либо информация в вашей памяти от предыдущих вызовов; поскольку ваше приложение было только что перезапущено, от предыдущего запуска в памяти ничего не осталось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...