Openfire и push-уведомления

Я пишу приложение IOS, которое в основном представляет собой приложение для чата jabber. Я использую Openfire для сервера xmpp, и пока все отлично. Проблема, с которой я столкнулся сейчас, связана с push-уведомлениями. Приложение написано на Xcode, который получает пользовательские данные из PHP API. Openfire - это сервер xmpp. Проблема в том, что когда приложение отправляет сообщение в openfire, мне также нужно будет запросить PHP API, чтобы узнать, находится ли пользователь в сети, а если нет, отправить push-уведомление. Это должно происходить для каждого отправленного сообщения, и, как вы можете догадаться, это повлияет на производительность при выполнении всех этих запросов.

У меня все работает, просто не могу пройти мимо этого горба. Если бы только openfire запускал запрос по моему выбору при получении сообщения.

Может ли кто-нибудь предложить лучшую идею? В основном нужно знать, находится ли пользователь в сети (присутствие) раньше, чтобы я знал, что нужно отключить push-уведомление, и я не хочу запускать два запроса из моего приложения на одно отправленное сообщение. Спасибо.


person pogeybait    schedule 31.03.2012    source источник
comment
Не могли бы вы добавить более подробный ответ, что вы сделали с кодом openfire, пожалуйста?   -  person user1054134    schedule 08.03.2014


Ответы (2)


В openfire сообщения офлайн-пользователям хранятся в офлайн-таблице. Таким образом, ваш php-код не должен беспокоиться о статусе пользователя, если der есть какая-либо запись в таблице ofOfline, это означает, что пользователь был в автономном режиме. Теперь создайте планировщик, который будет продолжать искать в таблице ofOfline офлайн-сообщения, объединяя их вместе и отправляя уведомление пользователю.

person Vivek Giri    schedule 27.08.2012
comment
Извините, я не принял ваш ответ более своевременно. В итоге я использовал ваше решение, и оно сработало чудесно. - person pogeybait; 20.10.2012
comment
Привет, pogeybait, Приятно видеть, что все работает на вас. Надеюсь, вы сможете помочь вам в решении проблем. - person Vivek Giri; 14.02.2013
comment
@Vivek Giri, что вы подразумеваете под планировщиком - Java-кодом openfire или планировщиком базы данных? - person user1054134; 08.03.2014
comment
Привет @ user1054134, будучи разработчиком Java, я использовал планировщик на основе Spring, который использовался для отслеживания таблицы ofOfline. - person Vivek Giri; 09.03.2014
comment
@VivekGiri, можете ли вы рассказать об открытом огне, какой плагин или другой способ передать push-уведомление для отправки сообщения офлайн-пользователю? потому что я не знаю о серверной стороне (сервер Openfire - xmpp), клиентская сторона (ios) пробует каждый способ, но не добивается успеха. - person Dhaval Bhadania; 08.12.2014
comment
@VivekGiri вам не нужно создавать планировщик для отправки автономных уведомлений на сообщения от человека к человеку с обратным вызовом в автономном плагине (igniterealtime.org/projects/openfire/plugins.jsp) сделает эту работу за вас.. Но как решить проблему с групповыми сообщениями, автономные сообщения также хранятся в таблице offmessagearchive, для которой нет групповой автономной таблицы, доступной для Групповой чат. Есть ли какой-либо плагин для отправки уведомлений в автономном режиме? - person Shashank Shah; 17.02.2017

Я потратил много времени на библиотеку XAMPPHP, но не могу найти подходящего решения. поэтому для разработки веб-приложения для чата с jabber-сервером. вместо использования XAMPPHP вы можете использовать "http://strophe.im/strophejs/", это будет намного быстрее, чем XAMPPHP, и вы можете найти больше js-плагинов для Strophe js. и вы также можете найти более готовую клиентскую базу xmpp на strophe js. так что это будет лучше, чем XAMPHP.

person Maulik Kanani    schedule 01.04.2014