Smack 개발 총괄 (4) 메시지 관리
메시지 관리
우선 인 스 턴 트 메 신 저 에서 핵심 적 인 정보 관리 체제 가 빠 질 수 없다.smack 에서 정보 관리의 메커니즘 에 대한 기초 응용 은 상당히 간단 하 다.알 고 있 는 smack 의 프로그램 원숭이 들 은 samck 에서 XMPP 협 의 를 통 해 정 보 를 전달 한 다 는 것 을 잘 알 고 있다.(모 르 는 것 은 백과사전 XMPP 프로 토 콜 로 전환 하 십시오) 따라서 우 리 는 그 가 XML 데이터 로 포 장 된 메시지 유형 임 을 알 수 있 습 니 다. 그 중에서 smack 의 기본 정 보 는 org. jivesoftware. smack. packet. Message 로 구성 되 어 있 으 며 메시지 내용 은 body 태그 에 저 장 됩 니 다.
다음은 Smack 이 메시지 에 대한 관 리 를 직접 정리 하 겠 습 니 다.
온라인 뉴스
(1) 채 팅 관리자 가 져 오기
ChatManager mChatManager = ChatManager.getInstanceFor(mConnection);
(2) 채 팅 세 션 만 들 기
public Chat createChat(String userJid) {
Chat curChat = null;
curChat = mChatManager.createChat(userJid);
return curChat;
}
(3) 메시지 발송
public void sendMessage(Chat chat, Message message) {
try {
chat.sendMessage(message);
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
(4) 메시지 수신 에 대해 서 는 먼저 두 개의 리 셋 감청 Chat Manager Listener 와 ChatMessage Listener Chat Manager Listener 를 설명해 야 합 니 다.
/**
* Event fired when a new chat is created.
*
* @param chat the chat that was created.
* @param createdLocally true if the chat was created by the local user and false if it wasn't.
*/
void chatCreated(Chat chat, boolean createdLocally); //
ChatMessageListener:
void processMessage(Chat chat, Message message); //
실제 개발 에 서 는 메시지 세 션 chat 생 성 을 감청 할 때 메시지 감청 을 할 수 있 습 니 다.
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(this);
}
@Override
public void processMessage(Chat chat, Message message) {
MessageModel msg = MessageDealUtil.dealMessage(message);
if (msg.getBody() != null) {
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelable("message", msg);
intent.putExtras(bundle);
intent.setAction(MessageReceiver.SNAKE_MESSAGE_ACTION);
SnakeUtilKit.getSnakeApp().sendBroadcast(intent);
if (listener != null){
listener.onRecevie(msg,message.getBody());
}
}
}
오프라인 소식
오프라인 메 시 지 는 상대방 이 온라인 상태 가 아 닌 경우 openfire 의 처리 전략 입 니 다. 상대방 이 온라인 상태 가 아 닌 경우 잠시 오프라인 표 에 메 시 지 를 저장 합 니 다.그래서 클 라 이언 트 에 게 로그 인 에 성 공 했 을 때 오프라인 메 시 지 를 읽 고 읽 기 에 성공 한 후에 openfire 에 오프라인 메시지 캐 시 를 삭제 하 라 고 요청 합 니 다.(1) 오프라인 메시지 관리자 가 져 오기
OfflineMessageManager mOfflineMessageManager = new OfflineMessageManager(mConnection);
(2) 오프라인 메시지 가 져 오기
public void getOfflineMessage(){
LogTool.d(" ..");
if (mOfflineMessageManager != null){
try {
if (mOfflineMessageManager.getMessageCount() >0){
List messages = mOfflineMessageManager.getMessages();
for (Message message : messages){
processMessage(null,message);
}
}
mOfflineMessageManager.deleteMessages();
} catch (Exception e) {
e.printStackTrace();
}
}
}
기본 응용 은 어렵 지 않 습 니 다. 새로운 메시지 형식 을 확장 하려 면 message 의 유형 에 대해 메시지 형식 프로 토 콜 정 의 를 해 야 합 니 다.원 리 는 대략: 파일 - 업로드 서버 주소 - 응답 받 기 파일 주소 - > meesage 의 태그 body (예 를 들 어 json 형식 {"type": "img", "content": "주소"}) 를 조립 합 니 다.이렇게 하면 소식 을 받 을 때 소식 을 바 꾸 면 된다.
관심 있 으 면 같이 소통 할 수 있어 요.
바보 b mark 함께 노력 하 는 당신 에 게
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.