Я реализовал клиент чата facebook, который соединяется с помощью API Smack. В настоящий момент основные функции хорошо работают. Я отправляю, получаю сообщения, получаю печатные уведомления ... Но у меня есть проблема. Если я говорю с кем-то, использующим моего клиента, я получаю сообщения, которые я отправил контакту в чате facebook. Но если отправить сообщение контакту через чат facebook, мой клиент не получит это сообщение. Если контакт отвечает на меня, я получаю его сообщение, но диалог становится неполным, так как он просто показывает сообщения, отправленные контактом, но не показывает сообщение, отправленное в другом клиенте XMPP.XMPP - Facebook - Как моя клиентская реализация может получать сообщения, отправленные другими реализациями клиента?
Поскольку на facebook отображаются сообщения, отправленные моим клиентом, я думаю, что можно сделать то же самое. Я действительно новичок в XMPP, и мне нужна помощь, чтобы выяснить, как я могу это сделать.
Мой код выглядит следующим образом прямо сейчас:
Прием сообщений:
connection.getChatManager().addChatListener(
new ChatManagerListener(){
@Override
void chatCreated(Chat chat, boolean createdLocally) {
if(!createdLocally){
chat.addMessageListener(messageListener)
}
}
}
)
Слушатель сообщение просто передать сообщение через толчок к моему клиенту Javascript.
Отправка сообщения:
public boolean sendMessage(String jid, String message){
FacebookContact contact = mapJIDContact.get(jid)
try{
if (contact != null && (connection != null) && (connection.isConnected())) {
ChatManager chatManager = connection.getChatManager();
if(contact.chat == null){
contact.chat = chatManager.createChat(jid, messageListener);
}
contact.chat.sendMessage(message);
return true
}
return false
}
catch (XMPPException e){
return false
}
}
FacebookContact является класс, созданный мной. Он хранит некоторую контактную информацию и Чат, если он уже открыт.
EDIT:
Я обнаружил, что эта особенность, которую я хочу, обеспечивается этим расширением XMPP: http://xmpp.org/extensions/xep-0280.html. Я пытаюсь найти, если чат facebook реализует это расширение.
Спасибо за ответ. Вы все равно знаете, что я хочу? Я начинаю думать, что это какая-то внутренняя особенность facebook. Но андроидное приложение facebook также синхронизирует весь разговор. –
Насколько я знаю, в чате XMPP-сервера Facebook не реализовано много XEP, и я думаю, что приложения-бренды используют некоторый частный API, поскольку публичный не позволяет разработчику отправлять сообщения _send_. Я пытаюсь создать клиент чата Mac OS, и я думаю, что использование XMPP и Graph API - единственный способ получать сообщения, синхронизировать их и отправлять их. Тем не менее у нас нет возможности получать уведомления о полученных сообщениях, когда клиент находится в автономном режиме (это означает отсутствие push-уведомлений), кроме как из бесконечного бесконечного цикла, запущенного на выделенном сервере. –
Еще раз спасибо. :) –