Мы используем сервер ejabberd для нашего приложения для мобильных чатов. И мы используем IOS XMPP-Framework для нашего приложения IOS (https://github.com/robbiehanson/XMPPFramework)Получите автономные сообщения от XMPP без участия в сети
Но у нас есть проблема с реализацией, что мы не смогли найти решение. Мы реализовали каждый аспект обмена сообщениями XMPP, и все работает хорошо, кроме одного:
В то время как наше приложение находится на фоне, наш сервер ejabberd отправляет нам push-уведомления, чтобы сообщить нам об автономных сообщениях. (Только отправляет уведомление для сообщений в автономном режиме)
Затем мы решили реализовать функцию уведомлений о фоновой поддержке IOS для получения сообщений в автономном режиме, когда приложение находится на фоне.
Но проблема в том, что мы должны стать онлайн (отправить присутствие), чтобы получать сообщения в автономном режиме. Но когда мы делаем что создает 2 нежелательные последствия:
- Сторона, которая посылает сообщение видел наше присутствие в Online (хотя мы на заднем плане)
- Просто потому, что мы становимся онлайн в то время как приложение на нашем сервере, наш сервер не может отправлять push-уведомления для сообщений других людей, потому что мы в сети, и сервер может отправлять уведомления только для автономных сообщений.
Для решения этой проблемы, я могу думать только об этом, если есть способ получить автономные сообщения с сервера xmpp, не выходя из сети. Кто-нибудь знает, если Есть ли способ сделать это с XMPP-Framework для ИОС
[EDIT] Позвольте мне прояснить этот вопрос немного больше:
Проблемы больше, чем просто один:
задача 1 - Толчок проблема уведомления:
1.1 - Server check if the message is sending to an online or offline user. If the user is offline server sends push notification to inform user but if the user is online server doesnt send anything.
1.2 - When the application is in background and receive notification for offline messages, application become alive(still in background) and become online in order to get offline messages
1.3 - Because the client became online, server doesnt send the push notifications anymore but the application is still in background so the user cannot be informed about the message he/she received.
Так для того, чтобы исправить эти проблемы, мне нужно найти способ, чтобы получить сообщения в автономном режиме, не посылая онлайн присутствие на сервере
Задача 2 - Сообщение Присылать проблемы
2.1 - Server check if the message is sending to an online or offline user. If the user is offline server sends push notification to inform user but if the user is online server doesnt send anything.
2.2 - When the application is in background and receive notification for offline messages, application become alive(still in background) and become online in order to get offline messages
2.3 - When the application became online server sends all offline messages to client but doesnt send the total count of offline messages(At least I cannot get it with IOS XMPPFramework)
2.4 - So I dont know how much longer the client should stay alive in the background because I dont know the total count of offline messages, so after getting 2-3 messages I have to suspend the application in the background. But in that case there might be buggy situations such as XMPP Framework receive the offline message but I suspend the client application before writing it to database etc...
Для того, чтобы найти решение этих проблем:
- мне нужно найти способ, чтобы получить только 1 автономном сообщение когда я хочу с сервера
- Если возможно, мне также необходимо получить эти сообщения в автономном режиме, не становясь онлайн
любое представление о проблеме? – tolgatanriverdi