У меня есть приложение для чата ios, которое использует openfire, что мне нужно сделать, это отправить push-уведомление, когда сообщение (1) не может быть доставлено по какой-либо причине, (2) приложение находится в состоянии приостановлено, т.е. не может генерировать уведомление самостоятельно.
Я прочитал большинство связанных с этим вопросов/предложений по этому вопросу в stackoverflow и в других местах, и я пришел к выводу о нескольких решениях моей проблемы. Я не разработчик ios и не знаю ничего о openfire или xmpp до двух дней, поэтому я боюсь, что мое понимание вещей может быть неполным, и мои решения могут быть ошибочными.
Просьба подтвердить мое понимание этого и предложить, если я что-то упускаю или если есть лучший подход. Пожалуйста, также сообщите о том, насколько сложно будет реализовать конкретное решение, перечисленное ниже.
Задача здесь состоит в том, чтобы определить, когда требуется нажать и где процесс должен быть запущен, поэтому
1) одним из способов является использование xpp-реализации xep-0184 для проверки доставки сообщения. Чтобы сделать это, мы должны иметь некоторый флаг доставки с сообщением в базе данных ios, который обновляется, когда полученный ответ получен из другого конца. Поэтому нам нужно проверить этот флаг через некоторое время, и если поставленный статус является ложным, инициируйте процесс push с сообщением. Похоже, это сложное решение (дождитесь ответа.. отметьте флаг с некоторой задержкой времени) не очень впечатляет)
2). Более прямой подход заключается в том, чтобы что-то сделать в openfire, когда openfire не может доставить сообщение, которое хранит его в автономной таблице, мы можем сделать некоторый перехват в этой части и инициировать процесс push с сообщением. Это похоже на правильный подход, но я действительно боюсь получить что-то внутри openfire и что-то изменить (может быть, тоже легко, кто-то, кто немного поработал с openfire, может сказать?)
3) Это мое последнее средство, и это не решение. Но если я не смогу сделать это правильно в ожидаемый промежуток времени (через неделю), мы планируем отправить push-уведомление для всех Сообщения. oppenfire будет вести обычную чат, в то время как на каждое сообщение будет отправлено push с нашего сервера, но когда приложение находится на переднем плане, мы делаем что-то, чтобы обрабатывать дополнительные push-сообщения, которые не должны отображаться, иначе push будет получен всякий раз, когда есть сообщение. Что вы, ребята, думаете об этом временном пути (мы, разумеется, должны изменить это, как только сможем), это выполнимо (или я тоже что-то упустил).
P.S. Может ли кто-нибудь сказать, как Whatsapp и другие популярные приложения справляются с этим?
Большое спасибо за вашу помощь.